//+------------------------------------------------------------------+ //| Martingale RSI indicator.mq5 | //| Copyright 2020 sadema3 | //| | //+------------------------------------------------------------------+ #property copyright "sadema3" #property version "1.00" #include // Globale Variablen sinput string ________Block_1________="====== EA settings ================================="; input ENUM_TIMEFRAMES Timeframe = PERIOD_H1; // Select period input double Lots = 0.01; // Select lotsize input int openpos = 1; //Open positions input string Commentary ="Comment"; // Comment sinput string ________Block_2________="====== BUY settings ================================="; input bool tradeBUY1 = true; // Trade Buy position input int TPBUY1 = 200; // Set Take Profit input int SLBUY1 = 2000; // Set Stop Loss input int RSIlow = 30; // RSI threshold input int RSIjumpB1 = 10; // RSI distance between 2 periods input int pipdifferenceB1 = 100; // Pip distance between two BUY positions input int TPminB1 = 50; // Minimum Take Profit BUY position sinput string ________Block_3________="====== SELL settings ================================="; input bool tradeSELL1 = true; // Trade Sell position input int TPSELL1 = 200; // Set Take Profit input int SLSELL1 = 2000; // Set Stop Loss input int RSIhigh = 70; // RSI threshold input int RSIjumpS1 = 15; // RSI distance between 2 periods input int pipdifferenceS1 = 100; // Pip distance between two SELL positions input int TPminS1 = 50; // Minimum Take Profit SELL position // Signals // RSI int RSIPeriod = 14; int RSIHandle; double RSI[]; // EMA int EMAPeriod = 50; int EMAHandle; double EMA[]; //Initialisierungsfunktion****************************************************************************************** int OnInit() { // RSI RSIHandle = iRSI(_Symbol, Timeframe, RSIPeriod, PRICE_CLOSE); ArraySetAsSeries(RSI, true); // EMA EMAHandle = iMA(_Symbol, Timeframe, EMAPeriod, 0, MODE_EMA, PRICE_CLOSE); ArraySetAsSeries(EMA, true); return (INIT_SUCCEEDED); } void OnTick() { CopyBuffer(RSIHandle, 0, 0, 3, RSI); // RSI Buffer CopyBuffer(EMAHandle, 0, 0, 3, EMA); // EMA Buffer MqlRates PriceArray[]; ArraySetAsSeries(PriceArray, true); double price = CopyRates(Symbol(), Timeframe, 0 , 3, PriceArray); double price0 = PriceArray[0].low; double price1 = PriceArray[1].high; double ask = NormalizeDouble(SymbolInfoDouble(_Symbol, SYMBOL_ASK),_Digits); double bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits); double RSIB1 = (RSI[0]-RSI[1])*(-1); double RSIS1 = (RSI[0]-RSI[1]); // BUY Position nur für Paare auswählen mit einem negativen Handelsspread (Gewinn für Händler) if ( PositionsTotal() < openpos && tradeBUY1 == true && RSI[1] < RSIlow && RSI[0] > RSIlow && ((RSI[0] - RSI[1])*(-1)) < RSIjumpB1 // EMA[0] < price0 ) { CTrade trade; double slB1 = ask - SLBUY1 * _Point; double tpB1 = ask + TPBUY1 * _Point; trade.Buy(Lots, _Symbol, ask, slB1, tpB1, Commentary); } // End if Buy double PositionBuyPrice=PositionGetDouble(POSITION_PRICE_OPEN); if (PositionBuyPrice == 0.0) { PositionBuyPrice = 0.99999; } double DistanceBuy = NormalizeDouble((ask - PositionBuyPrice), _Digits); // + oder - double OpenBuyDistance1 = pipdifferenceB1 * _Point; double OpenBuyDistance2 = 2 * pipdifferenceB1 * _Point; double OpenBuyDistance3 = 3 * pipdifferenceB1 * _Point; double OpenBuyDistance4 = 4 * pipdifferenceB1 * _Point; double OpenBuyDistance5 = 5 * pipdifferenceB1 * _Point; double OpenBuyDistance6 = 6 * pipdifferenceB1 * _Point; double OpenBuyDistance7 = 7 * pipdifferenceB1 * _Point; double OpenBuyDistance8 = 8 * pipdifferenceB1 * _Point; double OpenBuyDistance9 = 9 * pipdifferenceB1 * _Point; int BuyPositions = CountBuyPositions(); PositionBuyPrice=PositionGetDouble(POSITION_PRICE_OPEN); if (PositionsTotal()== 1 && tradeBUY1 == true && PositionSelect(_Symbol)==true && PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY && ask <= PositionBuyPrice - OpenBuyDistance1 ) { openbuytrade1(ask, bid, BuyPositions, PositionBuyPrice, DistanceBuy, OpenBuyDistance1); } if (PositionsTotal()== 2 && tradeBUY1 == true && PositionSelect(_Symbol)==true && PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY && ask <= PositionBuyPrice - OpenBuyDistance2 ) { openbuytrade2(ask, bid, BuyPositions, PositionBuyPrice, DistanceBuy, OpenBuyDistance2); } if (PositionsTotal()== 3 && tradeBUY1 == true && PositionSelect(_Symbol)==true && PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY && ask <= PositionBuyPrice - OpenBuyDistance3 ) { openbuytrade3(ask, bid, BuyPositions, PositionBuyPrice, DistanceBuy, OpenBuyDistance3); } if (PositionsTotal()== 4 && tradeBUY1 == true && PositionSelect(_Symbol)==true && PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY && ask <= PositionBuyPrice - OpenBuyDistance4 ) { openbuytrade4(ask, bid, BuyPositions, PositionBuyPrice, DistanceBuy, OpenBuyDistance4); } if (PositionsTotal()== 5 && tradeBUY1 == true && PositionSelect(_Symbol)==true && PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY && ask <= PositionBuyPrice - OpenBuyDistance5 ) { openbuytrade5(ask, bid, BuyPositions, PositionBuyPrice, DistanceBuy, OpenBuyDistance5); } if (PositionsTotal()== 6 && tradeBUY1 == true && PositionSelect(_Symbol)==true && PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY && ask <= PositionBuyPrice - OpenBuyDistance6 ) { openbuytrade6(ask, bid, BuyPositions, PositionBuyPrice, DistanceBuy, OpenBuyDistance6); } if (PositionsTotal()== 7 && tradeBUY1 == true && PositionSelect(_Symbol)==true && PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY && ask <= PositionBuyPrice - OpenBuyDistance7 ) { openbuytrade7(ask, bid, BuyPositions, PositionBuyPrice, DistanceBuy, OpenBuyDistance7); } if (PositionsTotal()== 8 && tradeBUY1 == true && PositionSelect(_Symbol)==true && PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY && ask <= PositionBuyPrice - OpenBuyDistance8 ) { openbuytrade8(ask, bid, BuyPositions, PositionBuyPrice, DistanceBuy, OpenBuyDistance8); } if (PositionsTotal()== 9 && tradeBUY1 == true && PositionSelect(_Symbol)==true && PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY && ask <= PositionBuyPrice - OpenBuyDistance9 ) { openbuytrade9(ask, bid, BuyPositions, PositionBuyPrice, DistanceBuy, OpenBuyDistance9); } // SELL Position nur für Paare auswählen mit einem negativen Handelsspread (Gewinn für Händler) if ( PositionsTotal() < openpos && tradeSELL1 == true && RSI[1] > RSIhigh && RSI[0] < RSIhigh && (RSI[0] - RSI[1]) < RSIjumpS1 // EMA[0] > price0 ) { CTrade trade; double slS1 = bid + SLSELL1 * _Point; double tpS1 = bid - TPSELL1 * _Point; trade.Sell(Lots, _Symbol, bid, slS1, tpS1, Commentary); } // End if Sell double PositionSellPrice=PositionGetDouble(POSITION_PRICE_OPEN); if (PositionSellPrice == 0.0) { PositionSellPrice = 9.00000; } double DistanceSell = NormalizeDouble((bid - PositionSellPrice), _Digits); double OpenSellDistance1 = pipdifferenceS1 * _Point; double OpenSellDistance2 = 2 * pipdifferenceS1 * _Point; double OpenSellDistance3 = 3 * pipdifferenceS1 * _Point; double OpenSellDistance4 = 4 * pipdifferenceS1 * _Point; double OpenSellDistance5 = 5 * pipdifferenceS1 * _Point; double OpenSellDistance6 = 6 * pipdifferenceS1 * _Point; double OpenSellDistance7 = 7 * pipdifferenceS1 * _Point; double OpenSellDistance8 = 8 * pipdifferenceS1 * _Point; double OpenSellDistance9 = 9 * pipdifferenceS1 * _Point; int SellPositions = CountSellPositions(); // Comment SELL POSITIONS // Comment ("Bid price: ", bid, "\n" , "Qty. Buy positions: " , BuyPositions, "\n" , "Qty. Sell positions: ", SellPositions, "\n" , "RSI distance SELL: ", RSIS1, "\n", "Position Sell Price: ", PositionSellPrice, "\n", "Distance to Sell Price: ", DistanceSell, "\n", "Open Sell 2 @distance: ", OpenSellDistance1, "\n", "Open Sell 3 @distance: ", OpenSellDistance2, "\n", "Open Sell 4 @distance: ", OpenSellDistance3, "\n", "Open Sell 5 @distance: ", OpenSellDistance4, "\n", "Open Sell 6 @distance: ", OpenSellDistance5, "\n", "Open Sell 7 @distance: ", OpenSellDistance6, "\n", "Open Sell 8 @distance: ", OpenSellDistance7, "\n", "Open Sell 9 @distance: ", OpenSellDistance8, "\n", "Open Sell 10 @distance: ", OpenSellDistance9); // Comment BUY POSITIONS // Comment ("Ask price: ", ask, "\n", "Qty. Buy positions: " , BuyPositions, "\n" , "Qty. Sell positions: ", SellPositions, "\n" , "RSI distance BUY: ", RSIB1, "\n", "Position Buy Price: ", PositionBuyPrice, "\n", "Distance to Buy Price: ", DistanceBuy, "\n", "Open Buy 2 @distance: ", OpenBuyDistance1, "\n", "Open Buy 3 @distance: ", OpenBuyDistance2, "\n", "Open Buy 4 @distance: ", OpenBuyDistance3, "\n", "Open Buy 5 @distance: ", OpenBuyDistance4, "\n", "Open Buy 6 @distance: ", OpenBuyDistance5, "\n", "Open Buy 7 @distance: ", OpenBuyDistance6, "\n", "Open Buy 8 @distance: ", OpenBuyDistance7, "\n", "Open Buy 9 @distance: ", OpenBuyDistance8, "\n", "Open Buy 10 @distance: ", OpenBuyDistance9); if (PositionsTotal()== 1 && tradeSELL1 == true && PositionSelect(_Symbol)==true && PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL && bid >= PositionSellPrice + OpenSellDistance1 ) { PositionSellPrice=PositionGetDouble(POSITION_PRICE_OPEN); openselltrade1(ask, bid, SellPositions, PositionSellPrice, DistanceSell, OpenSellDistance1); } if (PositionsTotal()== 2 && tradeSELL1 == true && PositionSelect(_Symbol)==true && PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL && bid >= PositionSellPrice + OpenSellDistance2 ) { openselltrade2(ask, bid, SellPositions, PositionSellPrice, DistanceSell, OpenSellDistance2); } if (PositionsTotal()== 3 && tradeSELL1 == true && PositionSelect(_Symbol)==true && PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL && bid >= PositionSellPrice + OpenSellDistance3 ) { openselltrade3(ask, bid, SellPositions, PositionSellPrice, DistanceSell, OpenSellDistance3); } if (PositionsTotal()== 4 && tradeSELL1 == true && PositionSelect(_Symbol)==true && PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL && bid >= PositionSellPrice + OpenSellDistance4 ) { openselltrade4(ask, bid, SellPositions, PositionSellPrice, DistanceSell, OpenSellDistance4); } if (PositionsTotal()== 5 && tradeSELL1 == true && PositionSelect(_Symbol)==true && PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL && bid >= PositionSellPrice + OpenSellDistance5 ) { openselltrade5(ask, bid, SellPositions, PositionSellPrice, DistanceSell, OpenSellDistance5); } if (PositionsTotal()== 6 && tradeSELL1 == true && PositionSelect(_Symbol)==true && PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL && bid >= PositionSellPrice + OpenSellDistance6 ) { openselltrade6(ask, bid, SellPositions, PositionSellPrice, DistanceSell, OpenSellDistance6); } if (PositionsTotal()== 7 && tradeSELL1 == true && PositionSelect(_Symbol)==true && PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL && bid >= PositionSellPrice + OpenSellDistance7 ) { openselltrade7(ask, bid, SellPositions, PositionSellPrice, DistanceSell, OpenSellDistance7); } if (PositionsTotal()== 8 && tradeSELL1 == true && PositionSelect(_Symbol)==true && PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL && bid >= PositionSellPrice + OpenSellDistance8 ) { openselltrade8(ask, bid, SellPositions, PositionSellPrice, DistanceSell, OpenSellDistance8); } if (PositionsTotal()== 9 && tradeSELL1 == true && PositionSelect(_Symbol)==true && PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL && bid >= PositionSellPrice + OpenSellDistance9 ) { openselltrade9(ask, bid, SellPositions, PositionSellPrice, DistanceSell, OpenSellDistance9); } } // End void OnTick // Count Buy Positions int CountBuyPositions() { int NumberOfBuyPositions=0; // local variable for qty positions for (int i=PositionsTotal()-1; i>=0; i--) // check all positions { string CurrencyPair=PositionGetSymbol(i); // Identify currency pair int PositionDirection=PositionGetInteger(POSITION_TYPE); // Check position type if (Symbol()==CurrencyPair) // If chart equals currency pair if (PositionDirection==POSITION_TYPE_BUY) { NumberOfBuyPositions = NumberOfBuyPositions+1; } } // End for return NumberOfBuyPositions; } // End count functon // Count Sell Positions int CountSellPositions() { int NumberOfSellPositions=0; // local variable for qty positions for (int i=PositionsTotal()-1; i>=0; i--) // check all positions { string CurrencyPair=PositionGetSymbol(i); // Identify currency pair int PositionDirection=PositionGetInteger(POSITION_TYPE); // Check position type if (Symbol()==CurrencyPair) // If chart equals currency pair if (PositionDirection==POSITION_TYPE_SELL) { NumberOfSellPositions = NumberOfSellPositions+1; } } // End for return NumberOfSellPositions; } // End count functon // SELL TRADES -------- Open further trades by pip distance void openselltrade1(double ask, double bid, int SellPositions, double PositionSellPrice, double DistanceSell, double OpenSellDistance1) { { CTrade trade; double TP = bid - TPSELL1 *_Point; double SL = bid + SLSELL1 *_Point; trade.Sell(Lots, _Symbol, bid, SL, TP, Commentary); } // End if Sell for (int i = PositionsTotal()-1; i>=0; i--) { string symbol = PositionGetSymbol(i); ulong PositionTicket=PositionGetInteger(POSITION_TICKET); { CTrade trade; double TP = PositionSellPrice + ((OpenSellDistance1/2) - ((TPminS1/2) *_Point)); double SL = PositionSellPrice + ((SLSELL1 * _Point) + OpenSellDistance1); trade.PositionModify(PositionTicket, SL, TP); } // End if modify } // End for } // End void void openselltrade2(double ask, double bid, int SellPositions, double PositionSellPrice, double DistanceSell, double OpenSellDistance2) { { CTrade trade; double TP = bid - TPSELL1 *_Point; double SL = bid + SLSELL1 *_Point; trade.Sell(Lots, _Symbol, bid, SL, TP, Commentary); } // End if Sell for (int i = PositionsTotal()-1; i>=0; i--) { string symbol = PositionGetSymbol(i); ulong PositionTicket=PositionGetInteger(POSITION_TICKET); { CTrade trade; double TP = PositionSellPrice + ((OpenSellDistance2/2) - ((TPminS1/3) *_Point)); double SL = PositionSellPrice + ((SLSELL1 * _Point) + (OpenSellDistance2)); trade.PositionModify(PositionTicket, SL, TP); } // End if modify } // End for } // End void void openselltrade3(double ask, double bid, int SellPositions, double PositionSellPrice, double DistanceSell, double OpenSellDistance3) { { CTrade trade; double TP = bid - TPSELL1 *_Point; double SL = bid + SLSELL1 *_Point; trade.Sell(Lots, _Symbol, bid, SL, TP, Commentary); } // End if Sell for (int i = PositionsTotal()-1; i>=0; i--) { string symbol = PositionGetSymbol(i); ulong PositionTicket=PositionGetInteger(POSITION_TICKET); { CTrade trade; double TP = PositionSellPrice + ((OpenSellDistance3/2) - ((TPminS1/4) *_Point)); double SL = PositionSellPrice + ((SLSELL1 * _Point) + (OpenSellDistance3)); trade.PositionModify(PositionTicket, SL, TP); } // End if modify } // End for } // End void void openselltrade4(double ask, double bid, int SellPositions, double PositionSellPrice, double DistanceSell, double OpenSellDistance4) { { CTrade trade; double TP = bid - TPSELL1 *_Point; double SL = bid + SLSELL1 *_Point; trade.Sell(Lots, _Symbol, bid, SL, TP, Commentary); } // End if Sell for (int i = PositionsTotal()-1; i>=0; i--) { string symbol = PositionGetSymbol(i); ulong PositionTicket=PositionGetInteger(POSITION_TICKET); { CTrade trade; double TP = PositionSellPrice + ((OpenSellDistance4/2) - ((TPminS1/5) *_Point)); double SL = PositionSellPrice + ((SLSELL1 * _Point) + (OpenSellDistance4)); trade.PositionModify(PositionTicket, SL, TP); } // End if modify } // End for } // End void void openselltrade5(double ask, double bid, int SellPositions, double PositionSellPrice, double DistanceSell, double OpenSellDistance5) { { CTrade trade; double TP = bid - TPSELL1 *_Point; double SL = bid + SLSELL1 *_Point; trade.Sell(Lots, _Symbol, bid, SL, TP, Commentary); } // End if Sell for (int i = PositionsTotal()-1; i>=0; i--) { string symbol = PositionGetSymbol(i); ulong PositionTicket=PositionGetInteger(POSITION_TICKET); { CTrade trade; double TP = PositionSellPrice + ((OpenSellDistance5/2) - ((TPminS1/6) *_Point)); double SL = PositionSellPrice + ((SLSELL1 * _Point) + (OpenSellDistance5)); trade.PositionModify(PositionTicket, SL, TP); } // End if modify } // End for } // End void void openselltrade6(double ask, double bid, int SellPositions, double PositionSellPrice, double DistanceSell, double OpenSellDistance6) { { CTrade trade; double TP = bid - TPSELL1 *_Point; double SL = bid + SLSELL1 *_Point; trade.Sell(Lots, _Symbol, bid, SL, TP, Commentary); } // End if Sell for (int i = PositionsTotal()-1; i>=0; i--) { string symbol = PositionGetSymbol(i); ulong PositionTicket=PositionGetInteger(POSITION_TICKET); { CTrade trade; double TP = PositionSellPrice + ((OpenSellDistance6/2) - ((TPminS1/7) *_Point)); double SL = PositionSellPrice + ((SLSELL1 * _Point) + (OpenSellDistance6)); trade.PositionModify(PositionTicket, SL, TP); } // End if modify } // End for } // End void void openselltrade7(double ask, double bid, int SellPositions, double PositionSellPrice, double DistanceSell, double OpenSellDistance7) { { CTrade trade; double TP = bid - TPSELL1 *_Point; double SL = bid + SLSELL1 *_Point; trade.Sell(Lots, _Symbol, bid, SL, TP, Commentary); } // End if Sell for (int i = PositionsTotal()-1; i>=0; i--) { string symbol = PositionGetSymbol(i); ulong PositionTicket=PositionGetInteger(POSITION_TICKET); { CTrade trade; double TP = PositionSellPrice + ((OpenSellDistance7/2) - ((TPminS1/8) *_Point)); double SL = PositionSellPrice + ((SLSELL1 * _Point) + (OpenSellDistance7)); trade.PositionModify(PositionTicket, SL, TP); } // End if modify } // End for } // End void void openselltrade8(double ask, double bid, int SellPositions, double PositionSellPrice, double DistanceSell, double OpenSellDistance8) { { CTrade trade; double TP = bid - TPSELL1 *_Point; double SL = bid + SLSELL1 *_Point; trade.Sell(Lots, _Symbol, bid, SL, TP, Commentary); } // End if Sell for (int i = PositionsTotal()-1; i>=0; i--) { string symbol = PositionGetSymbol(i); ulong PositionTicket=PositionGetInteger(POSITION_TICKET); { CTrade trade; double TP = PositionSellPrice + ((OpenSellDistance8/2) - ((TPminS1/9) *_Point)); double SL = PositionSellPrice + ((SLSELL1 * _Point) + (OpenSellDistance8)); trade.PositionModify(PositionTicket, SL, TP); } // End if modify } // End for } // End void void openselltrade9(double ask, double bid, int SellPositions, double PositionSellPrice, double DistanceSell, double OpenSellDistance9) { { CTrade trade; double TP = bid - TPSELL1 *_Point; double SL = bid + SLSELL1 *_Point; trade.Sell(Lots, _Symbol, bid, SL, TP, Commentary); } // End if Sell for (int i = PositionsTotal()-1; i>=0; i--) { string symbol = PositionGetSymbol(i); ulong PositionTicket=PositionGetInteger(POSITION_TICKET); { CTrade trade; double TP = PositionSellPrice + ((OpenSellDistance9/2) - ((TPminS1/10) *_Point)); double SL = PositionSellPrice + ((SLSELL1 * _Point) + (OpenSellDistance9)); trade.PositionModify(PositionTicket, SL, TP); } // End if modify } // End for } // End void // BUY TRADES --------- Open further trades by pip distance void openbuytrade1(double ask, double bid, int BuyPositions, double PositionBuyPrice, double DistanceBuy, double OpenBuyDistance1) { { CTrade trade; double TP = ask + TPBUY1 *_Point; double SL = ask - SLBUY1 *_Point; trade.Buy(Lots, _Symbol, ask, SL, TP, Commentary); } // End if Buy for (int i = PositionsTotal()-1; i>=0; i--) { string symbol = PositionGetSymbol(i); ulong PositionTicket=PositionGetInteger(POSITION_TICKET); { CTrade trade; double TP = PositionBuyPrice - (OpenBuyDistance1/2) + ((TPminB1/2) *_Point); // + oder - TP MIN double SL = PositionBuyPrice - ((SLBUY1 * _Point) + OpenBuyDistance1); trade.PositionModify(PositionTicket, SL, TP); } // End if modify } // End for } // End void void openbuytrade2(double ask, double bid, int BuyPositions, double PositionBuyPrice, double DistanceBuy, double OpenBuyDistance2) { { CTrade trade; double TP = ask + TPBUY1 *_Point; double SL = ask - SLBUY1 *_Point; trade.Buy(Lots, _Symbol, ask, SL, TP, Commentary); } // End if Buy for (int i = PositionsTotal()-1; i>=0; i--) { string symbol = PositionGetSymbol(i); ulong PositionTicket=PositionGetInteger(POSITION_TICKET); { CTrade trade; double TP = PositionBuyPrice - (OpenBuyDistance2/2) + ((TPminB1/3) *_Point); double SL = PositionBuyPrice - ((SLBUY1 * _Point) + (OpenBuyDistance2)); trade.PositionModify(PositionTicket, SL, TP); } // End if modify } // End for } // End void void openbuytrade3(double ask, double bid, int BuyPositions, double PositionBuyPrice, double DistanceBuy, double OpenBuyDistance3) { { CTrade trade; double TP = ask + TPBUY1 *_Point; double SL = ask - SLBUY1 *_Point; trade.Buy(Lots, _Symbol, ask, SL, TP, Commentary); } // End if Buy for (int i = PositionsTotal()-1; i>=0; i--) { string symbol = PositionGetSymbol(i); ulong PositionTicket=PositionGetInteger(POSITION_TICKET); { CTrade trade; double TP = PositionBuyPrice - (OpenBuyDistance3/2) + ((TPminB1/4) *_Point); double SL = PositionBuyPrice - ((SLBUY1 * _Point) + (OpenBuyDistance3)); trade.PositionModify(PositionTicket, SL, TP); } // End if modify } // End for } // End void void openbuytrade4(double ask, double bid, int BuyPositions, double PositionBuyPrice, double DistanceBuy, double OpenBuyDistance4) { { CTrade trade; double TP = ask + TPBUY1 *_Point; double SL = ask - SLBUY1 *_Point; trade.Buy(Lots, _Symbol, ask, SL, TP, Commentary); } // End if Buy for (int i = PositionsTotal()-1; i>=0; i--) { string symbol = PositionGetSymbol(i); ulong PositionTicket=PositionGetInteger(POSITION_TICKET); { CTrade trade; double TP = PositionBuyPrice - (OpenBuyDistance4/2) + ((TPminB1/5) *_Point); double SL = PositionBuyPrice - ((SLBUY1 * _Point) + (OpenBuyDistance4)); trade.PositionModify(PositionTicket, SL, TP); } // End if modify } // End for } // End void void openbuytrade5(double ask, double bid, int BuyPositions, double PositionBuyPrice, double DistanceBuy, double OpenBuyDistance5) { { CTrade trade; double TP = ask + TPBUY1 *_Point; double SL = ask - SLBUY1 *_Point; trade.Buy(Lots, _Symbol, ask, SL, TP, Commentary); } // End if Buy for (int i = PositionsTotal()-1; i>=0; i--) { string symbol = PositionGetSymbol(i); ulong PositionTicket=PositionGetInteger(POSITION_TICKET); { CTrade trade; double TP = PositionBuyPrice - (OpenBuyDistance5/2) + ((TPminB1/6) *_Point); double SL = PositionBuyPrice - ((SLBUY1 * _Point) + (OpenBuyDistance5)); trade.PositionModify(PositionTicket, SL, TP); } // End if modify } // End for } // End void void openbuytrade6(double ask, double bid, int BuyPositions, double PositionBuyPrice, double DistanceBuy, double OpenBuyDistance6) { { CTrade trade; double TP = ask + TPBUY1 *_Point; double SL = ask - SLBUY1 *_Point; trade.Buy(Lots, _Symbol, ask, SL, TP, Commentary); } // End if Buy for (int i = PositionsTotal()-1; i>=0; i--) { string symbol = PositionGetSymbol(i); ulong PositionTicket=PositionGetInteger(POSITION_TICKET); { CTrade trade; double TP = PositionBuyPrice - (OpenBuyDistance6/2) + ((TPminB1/7) *_Point); double SL = PositionBuyPrice - ((SLBUY1 * _Point) + (OpenBuyDistance6)); trade.PositionModify(PositionTicket, SL, TP); } // End if modify } // End for } // End void void openbuytrade7(double ask, double bid, int BuyPositions, double PositionBuyPrice, double DistanceBuy, double OpenBuyDistance7) { { CTrade trade; double TP = ask + TPBUY1 *_Point; double SL = ask - SLBUY1 *_Point; trade.Buy(Lots, _Symbol, ask, SL, TP, Commentary); } // End if Buy for (int i = PositionsTotal()-1; i>=0; i--) { string symbol = PositionGetSymbol(i); ulong PositionTicket=PositionGetInteger(POSITION_TICKET); { CTrade trade; double TP = PositionBuyPrice - (OpenBuyDistance7/2) + ((TPminB1/8) *_Point); double SL = PositionBuyPrice - ((SLBUY1 * _Point) + (OpenBuyDistance7)); trade.PositionModify(PositionTicket, SL, TP); } // End if modify } // End for } // End void void openbuytrade8(double ask, double bid, int BuyPositions, double PositionBuyPrice, double DistanceBuy, double OpenBuyDistance8) { { CTrade trade; double TP = ask + TPBUY1 *_Point; double SL = ask - SLBUY1 *_Point; trade.Buy(Lots, _Symbol, ask, SL, TP, Commentary); } // End if Buy for (int i = PositionsTotal()-1; i>=0; i--) { string symbol = PositionGetSymbol(i); ulong PositionTicket=PositionGetInteger(POSITION_TICKET); { CTrade trade; double TP = PositionBuyPrice - (OpenBuyDistance8/2) + ((TPminB1/9) *_Point); double SL = PositionBuyPrice - ((SLBUY1 * _Point) + (OpenBuyDistance8)); trade.PositionModify(PositionTicket, SL, TP); } // End if modify } // End for } // End void void openbuytrade9(double ask, double bid, int BuyPositions, double PositionBuyPrice, double DistanceBuy, double OpenBuyDistance9) { { CTrade trade; double TP = ask + TPBUY1 *_Point; double SL = ask - SLBUY1 *_Point; trade.Buy(Lots, _Symbol, ask, SL, TP, Commentary); } // End if Buy for (int i = PositionsTotal()-1; i>=0; i--) { string symbol = PositionGetSymbol(i); ulong PositionTicket=PositionGetInteger(POSITION_TICKET); { CTrade trade; double TP = PositionBuyPrice - (OpenBuyDistance9/2) + ((TPminB1/10) *_Point); double SL = PositionBuyPrice - ((SLBUY1 * _Point) + (OpenBuyDistance9)); trade.PositionModify(PositionTicket, SL, TP); } // End if modify } // End for } // End void