double Current_Loss, Sum_Loss; // текущий и суммарный убыток
int start() // -----------------------СТАРТ ЭКСПЕРТА---------------
{
//---------------------расчет по истории ордеров номера очередной итерации-----------------------------------------------
Iteration = 0; // зануляем инерации перед их учетом в цикле по истории
Sum_Loss = 0; // суммарный убыток по этим итерациямdatetime
Time_at_History_Current = 0,
Time_at_History_Previos = 0;
if(OrdersHistoryTotal() != 0)
{
for(int counter = OrdersHistoryTotal()-1; counter >= 0; counter--)
{
OrderSelect(counter, SELECT_BY_POS, MODE_HISTORY);
if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
if(OrderType() == OP_BUY || OrderType() == OP_SELL)
{
if(OrderProfit() < 0) // если убыток по выбранному ордеру, то считаем суммарный и записываем время закрытия ордера// для последующего его анализа при подсчете количества итераций
{
double lastLoss = OrderProfit();
Sum_Loss=Sum_Loss+lastLoss; // считаем общий убыток по закрытым подряд убыточным ордерам
Time_at_History_Current = OrderCloseTime();
}
//Print(" Time_at_History_Current_в цикле = ", TimeToStr(Time_at_History_Current, TIME_DATE|TIME_SECONDS));//Print(" Time_at_History_Previos_в цикле = ", TimeToStr(Time_at_History_Previos, TIME_DATE|TIME_SECONDS));if(Time_at_History_Current != Time_at_History_Previos) // если они не равны, то считаем итерации и делаем их равными
{
Time_at_History_Previos = Time_at_History_Current ;
Iteration++;
//Print("Iteration at History в условии сравнения = ", Iteration);
}
else// они равны, то проверяем, дополнительно, наличие профита по выбранному следующему ордеру и выходим из цикла
{
if(OrderProfit() >= 0)
break;
}
}
}
}
}
//Print("Iteration at History = ", Iteration, " Time_at_History_Current = ", TimeToStr(Time_at_History_Current, TIME_DATE|TIME_SECONDS),// " Time_at_History_Previos = ", TimeToStr(Time_at_History_Previos, TIME_DATE|TIME_SECONDS));
...
...
}// конец старт
if (TotalCloseProfit) < 0.0) { // Имеем убыток по закрытым позам
if ((AccountEquity() + TotalCloseProfit) >= AccountBalance()) { // Достигли безубытка// Здесь какой-то код, который необходимо выполнить при достижении безубытка
}
}
这是它现在的样子。
//+------------------------------------------------------------------+
//| mo_bidir.mq4
//|在5M的时间框架内效果最好。
//+------------------------------------------------------------------+
#property copyright"Copyright © 2010 - Monu Ogbe"
#define MAGIC 1234
#define IDENT "mo_bidir"
外来的双倍数lot = 1。
外来的双倍止损 = 76; //
外来的双倍利润 = 750; //
extern int steps = 5; // Pending order step
int start(){
如果(OrdersTotal() == 0){
OrderSend(Symbol(), OP_BUY, lots,Ask, 3, Ask - stop_loss * Point, Bid + take_profit * Point, IDENT, MAGIC, 0, Blue) 。
OrderSend(Symbol(), OP_SELL, lots,Bid, 3, Bid + take_profit * Point, Ask - take_profit * Point, IDENT, MAGIC, 0, Red)。
OrderSend(Symbol(), OP_BUYSTOP, 0.5*lots,Ask+steps*Point, 3, Ask - stop_loss * Point, Bid + take_profit * Point, IDENT, MAGIC, 0, Blue) 。
OrderSend(Symbol(), OP_SELLSTOP, 0.5*lots,Bid-steps*Point, 3, Bid + take_profit * Point, Ask - take_profit * Point, IDENT, MAGIC, 0, Red) 。
}
return(0);
}
在历史上寻找一个代码Breakeven。可能有。分享一下。 我有一个Breakeven代码,但它是在开放订单的基础上工作的。 我有一个EA,在相反的信号下关闭亏损的,在一个信号上打开。现在你需要有这个Breakeven代码来记住多少成亏损并传递信息,所以第二个等订单已经在图表上看到零利润线,考虑到过去的损失。专家顾问没有止损,这意味着亏损的交易将不会被止损平仓。
每次你把它移到所需的价格(收盘时的收支平衡),当你关闭一个订单并在下一个订单中看到旧价格时,不要删除它(线)。
想找一个历史收支平衡的代码。也许有人有,请分享。
我有一个Breakeven代码,但它是基于未平仓的订单。
当订单出现亏损时,我有一个很好的工作指令,当订单到达盈亏平衡点时,它应该打开。 考虑到之前的损失,订单已经看到了图表上利润线的零线。专家顾问没有止损,这意味着亏损的交易将不会被止损平仓。
每次你把它移到所需的价格(收盘时的收支平衡),当你关闭订单并在下一个订单中看到旧价格时,不要删除它(线)。
这并不容易。
我自己无法实施。
我想让这条线出现在亏损的交易中,这样我就能在达到这条线的时候关闭。
也就是说,我需要一条只有在出现亏损订单时才会画出的线,但这条线将根据未平仓交易的手数和以前的亏损交易记录来画。如果我理解正确的话,你问题的部分是考虑到你的EA连续亏损交易的总损失,并与当前市场订单的利润水平相比较,以设定盈亏平衡线? 。
我没有止损线,也就是没有止损和止盈。
我想看到价格线,我必须在那里以这样的方式去关闭交易,以前关闭的订单是重叠的。
我需要在开始区块后面有一个区块,它将计数并将信息传递给开始区块,当它达到这个价格线时,我将使用这些信息来关闭交易。
你需要一个全局变量,把它变成一个全局终端,或者图形对象--那么它将只在这个图形上可见,如果需要的话,把它写到一个文件里,或者写到注册表里,或者直接写到内存里。有许多变种。
。
这里是我的代码部分--负责核算这个特定EA的连续亏损交易的总损失(根据魔术师的说法)。我为我的变种网Avalanche制作了它--你可以根据你的需要编辑它--代码被注释出来了...
全局变量
在这个代码部分之后,你还可以循环查看这个非常EA的未结订单,并计算其总利润。然后你将这个值与变量
并作出决定。
想找一个历史收支平衡的代码。也许有人有,请分享。
我有一个Breakeven代码,但它是基于未平仓的订单。
当订单出现亏损时,我有一个很好的工作指令,当订单到达盈亏平衡点时,它应该打开。 考虑到之前的损失,订单已经看到了图表上利润线的零线。专家顾问没有止损,这意味着亏损的交易将不会被止损平仓。
计算所有平仓交易的总利润,并将其保存在一个变量中,例如,TotalCloseProfit。然后使用下面这段代码,没有任何图形或其他设计。
我看了一下日志。
这似乎是原因,但我不知道这意味着什么。谁能解释一下?以及如何解决这个问题?