Merci pour vos conseil, j'ai déjà fait quelques je vais une correction pour mieux répondre à mon besoin.
le code ci-dessous
#include <Trade\Trade.mqh>
CTrade trade;
input double lot1 = 0.1;
input double lot2 = 0.2;
input double lot3 = 0.4;
input double lot4 = 0.8;
input double lot5 = 1.6;
int step = 1;
void OnTick()
{
if(PositionsTotal()<1)
{
debut();
}
}
void debut()
{
switch(step)
{
case 1:
{step1();}
break;
case 2:
{step2();}
break;
case 3:
{step3();}
break;
case 4:
{step4();}
break;
case 5:
{step5();}
break;
default:
{OnTick();}
break;
}
}
void step1()
{
double buy = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
double sell = SymbolInfoDouble(_Symbol, SYMBOL_BID);
double sl = buy - 5 * _Point;
double tp = buy + 30 * _Point;
if(trade.Buy(lot1, _Symbol, buy, sl, tp))
{
if(HistorySelect(TimeCurrent(), TimeCurrent()))
{
ulong ticket1 = HistoryDealGetTicket(0);
double profit = HistoryDealGetDouble(ticket1, DEAL_PROFIT);
Comment(profit);
int code = (int)trade.ResultRetcode();
ulong ticket = trade.ResultOrder();
if(profit < 0)
{
step ++;
}
}
}
}
void step2()
{
double buy = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
double sell = SymbolInfoDouble(_Symbol, SYMBOL_BID);
double sl = buy - 5 * _Point;
double tp = buy + 30 * _Point;
if(trade.Buy(lot2, _Symbol, buy, sl, tp))
{
if(HistorySelect(TimeCurrent(), TimeCurrent()))
{
ulong ticket1 = HistoryDealGetTicket(0);
double profit = HistoryDealGetDouble(ticket1, DEAL_PROFIT);
Comment(profit);
int code = (int)trade.ResultRetcode();
ulong ticket = trade.ResultOrder();
if(profit < 0)
{
step ++;
}
}
}
}
void step3()
{
double buy = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
double sell = SymbolInfoDouble(_Symbol, SYMBOL_BID);
double sl = buy - 5 * _Point;
double tp = buy + 30 * _Point;
if(trade.Buy(lot3, _Symbol, buy, sl, tp))
{
if(HistorySelect(TimeCurrent(), TimeCurrent()))
{
ulong ticket1 = HistoryDealGetTicket(0);
double profit = HistoryDealGetDouble(ticket1, DEAL_PROFIT);
Comment(profit);
int code = (int)trade.ResultRetcode();
ulong ticket = trade.ResultOrder();
if(profit < 0)
{
step ++;
}
}
}
}
void step4()
{
double buy = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
double sell = SymbolInfoDouble(_Symbol, SYMBOL_BID);
double sl = buy - 5 * _Point;
double tp = buy + 30 * _Point;
if(trade.Buy(lot4, _Symbol, buy, sl, tp))
{
if(HistorySelect(TimeCurrent(), TimeCurrent()))
{
ulong ticket1 = HistoryDealGetTicket(0);
double profit = HistoryDealGetDouble(ticket1, DEAL_PROFIT);
Comment(profit);
int code = (int)trade.ResultRetcode();
ulong ticket = trade.ResultOrder();
if(profit < 0)
{
step ++;
}
}
}
}
void step5()
{
double buy = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
double sell = SymbolInfoDouble(_Symbol, SYMBOL_BID);
double sl = buy - 5 * _Point;
double tp = buy + 30 * _Point;
if(trade.Buy(lot5, _Symbol, buy, sl, tp))
{
if(HistorySelect(TimeCurrent(), TimeCurrent()))
{
ulong ticket1 = HistoryDealGetTicket(0);
double profit = HistoryDealGetDouble(ticket1, DEAL_PROFIT);
Comment(profit);
int code = (int)trade.ResultRetcode();
ulong ticket = trade.ResultOrder();
if(profit < 0)
{
step = 1;
}
}
}
}
//+------------------------------------------------------------------+