如何编码? - 页 318

 
mladen:
dasio 它已经在循环计算当前一天的所有小时。我把iClose()和iOpen()放在一起,只是作为一个从1小时以外的时间框架调用的例子。如果你想访问与当前日期不同的日期,那么就把startTime=iTime(NULL,PERIOD_D1,0); 部分替换为你希望收集的任何日期的数据。

谢谢你。

也许我必须要学习。

我不明白我怎么能对00:00的蜡烛-01:00-02:00等进行单独计算。

对不起

 

信号问题

Mladen

谢谢你,我已经仔细看了....Im仍在实验的代码。我将通知当通过。

 

大士

这一部分

int i=iBarShift(NULL,PERIOD_H1,startTime);

将i设置为指定日期的第一根小时蜡烛的位置(这就是为什么添加了startTime=iTime(NULL,PERIOD_D1,0); 的原因--为了找出一天的起始时间),之后它将循环查看每根1小时的蜡烛值,直到一天保持不变(例如,在星期五, 它不会循环24次,而是22或23次,取决于你的经纪人)。

如果你需要感觉到一些数组,必须以不同的方式完成,如果这是你的想法,请让我现在就去做)

dasio:
谢谢你。

也许我必须要学习。

我不明白我如何能对00:00的蜡烛-01:00-02:00等进行单独计算。

对不起
 

如何制作一个专家站?

编码员你好。

如何编写一些额外的代码,使专家在交易胜利后停止?

点子已经在袋子里了,然后让专家止损...

非常感谢

Tomcat98

 
mladen:
dasio

这一部分

int i=iBarShift(NULL,PERIOD_H1,startTime);

将i设置为指定日期的第一根小时蜡烛的位置(这就是为什么添加了startTime=iTime(NULL,PERIOD_D1,0); 的原因--以找出一天的起始时间),然后它将循环查看每个1小时的条形值,直到一天保持不变(例如,在星期五,它不会循环24次,而是22或23次,取决于你的经纪人)。

如果你需要感觉到一些数组必须以不同的方式完成,我现在就告诉你,如果这是你的想法)

谢谢你。

我明白了一点。

但是我需要它的例子。

我必须把这些变量联系起来。

(candle 00:00 ; Variable = Close+High

蜡烛01:00;变量1 = Close+Open

蜡烛02:00;变量2=高点+低点。

以此类推,一天中的所有小时的蜡烛。

因此,这些变量是以双倍的方式定义的。

之后我必须对变量进行一些数学计算,并将结果关联到一个缓冲区(这不是一个问题)。

对我来说,问题在于变量的关联....。

 

另一个问题......我正在努力学习编程,有时(只是有时)我需要帮助。

如果我有一个放置两个挂单的 EA,如果我想当一个挂单被打开时,另一个挂单必须被删除,我该如何编码?

谢谢你。

 

你必须使用2个循环。

首先,你必须计算订单,以找出一些挂单 是否已成为 "常规 "订单(所以你必须对OP_BUY或OP_SELL类型的订单进行常规计算,如果你愿意,也要计算其余的订单)。

如果有打开的订单,那么你必须再循环一次,删除所有不是OP_BUY或OP_SELL类型的订单。

代码可以是这样的。

int opened =0;

int pending =0;

for(int i=OrdersTotal()-1; i>=0; i--)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() !=Symbol()) continue;

if(OrderMagicNumber()!=MagicNumber) continue;

if(OrderType()==OP_BUY || OrderType()==OP_SELL)

opened++;

else pending++;

}

if (opened>0 && pending>0)

{

for(i=OrdersTotal()-1; i>=0; i--)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() !=Symbol()) continue;

if(OrderMagicNumber()!=MagicNumber) continue;

if(OrderType()!=OP_BUY && OrderType()!=OP_SELL)

OrderDelete(OrderTicket());

}

}
dasio:
另一个问题......我正在努力学习编程,有时(只是有时)我需要帮助。

如果我有一个EA,放置了两个挂单,如果我想当一个挂单被打开时,另一个挂单必须被删除,我如何编码?

谢谢你
 

只关闭所有卖出或所有买入头寸(当达到目标利润时)。

大家好...我是外汇和EA的新手。我试图找到一个 "关闭所有卖出 "或 "关闭所有买入 "的EA,但没有找到。我 找到了关闭 所有卖出或所有买入而没有 "击中目标或利润"。如果有人能帮助我创建一个具有以下功能的EA,这是否可能呢?

1)如果利润达到X目标,关闭所有卖出。

2)如果利润达到X目标,关闭所有的买入。

3)包括追踪止损(如果可能,如果不能,没有问题)

4)如果净值或保证金水平低于X%,如果关闭所有买入或关闭所有卖出,则不关闭(如果可能,如果不能,则没有问题)

注意。

如果没有4是很难编码的,所以只要在一个EA中没有1、2和3。

如果没有4和3,那么在一个EA中就没有1和2。

如果仍然困难,就单独创建1和2。

如果有人能向我提供上述信息,我将非常感激。

预先感谢

 
pipsmonitor:
大家好...我是外汇和EA的新手。我试图找到一个 "关闭所有卖出 "或 "关闭所有买入 "的EA,但没有找到。我只找到了关闭所有卖出或所有买入而没有 "击中目标或利润"。如果有人能帮助我创建一个具有以下功能的EA,这是否可能呢

1)如果利润达到X目标,关闭所有卖出。

2)如果利润达到X目标,关闭所有买入。

3)包括追踪止损(如果可能,如果不能就没有问题)

4)如果股本或保证金水平低于X%,如果关闭所有买入或关闭所有卖出,则不关闭(如果可能,如果不能,则没有问题)

注意。

如果没有4是很难编码的,所以只要在一个EA中没有1、2和3。

如果没有4和3,那么在一个EA中就没有1和2。

如果仍然困难,就单独创建1和2。

如果有人能向我提供上述信息,我将非常感激。

预先感谢

你好,Pipsmonitor。

也许在这个页面上找到了一些东西https://www.mql5.com/en/forum/181179 也在论坛标题栏上做了一个Goggle搜索,使用了closed on profit发现了一些你可能会用到的东西,也可以尝试搜索trailing Eas,知道有一个Ema trailing和BBand stop trailing Ea。

 

你好。

我正在尝试合并这两段代码,但我遇到了麻烦。

我需要当一个挂单 被执行时,另一个必须被取消。

谢谢你的帮助

int opened =0;

int pending =0;

for(int i=OrdersTotal()-1; i>=0; i--)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() !=Symbol()) continue;

if(OrderMagicNumber()!=Magic) continue;

if(OrderType()==OP_BUY || OrderType()==OP_SELL)

opened++;

else pending++;

}

if (opened>0 && pending>0)

{

for(i=OrdersTotal()-1; i>=0; i--)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() !=Symbol()) continue;

if(OrderMagicNumber()!=Magic) continue;

if(OrderType()!=OP_BUY && OrderType()!=OP_SELL)

OrderDelete(OrderTicket());

}

} [/PHP]

[PHP] extern int Magic = 68415;

extern int Orario_Inizio = 0;

extern int Orario_Fine = 6;

extern int Buffer = 0;

extern double Lotti = 0.1;

extern int TakeProfit = 10;

extern int StopLoss = 50;

double Massimo;

double Minimo;

int BarCount;

int BarStart;

int BarShift;

double MinLot;

double LotSize;

int i;

int ticket;

string Status;

string BuyStatus1;

string SellStatus1;

double Range;

string CommentoRange;

double pipMultiplier = 1;

int init()

{

}

int start()

{

if (Digits==3 || Digits==5)

{pipMultiplier = 10;}

else {pipMultiplier = 1; }

double TakeProfit1 = TakeProfit*Point*pipMultiplier;

double StopLoss1 = StopLoss*Point*pipMultiplier;

double Buffer1 = Buffer*Point*pipMultiplier;

double StopLossPrice = NormalizeDouble(StopLoss1,Digits);

double TakeProfitPrice = NormalizeDouble(TakeProfit1,Digits);

double BufferPrice = NormalizeDouble(Buffer1,Digits);

//CALCOLA LE BARRE DEL RANGE

if(Orario_Inizio>Orario_Fine)

{

BarCount=24+Orario_Fine-Orario_Inizio;

}

if(Orario_Inizio<Orario_Fine)

{

BarCount=Orario_Fine-Orario_Inizio;

}

//CALCOLA IL MASSIMO E IL MINIMO DEL RANGE

if(Hour()>=Orario_Fine)

{

BarStart=Hour()-Orario_Fine;

BarShift=BarStart+BarCount;

Minimo=iLow(NULL,PERIOD_H1,BarStart);

Massimo=0;

for(i=BarStart;i<=BarShift;i++)

{

Massimo=MathMax(Massimo,iHigh(NULL,PERIOD_H1,i));

Minimo=MathMin(Minimo,iLow(NULL,PERIOD_H1,i));

Range=(Massimo-Minimo)/Point;

}

}

else

{

Massimo=0;

Minimo=0;

return(0);

}

//CONTROLLA SE E' L'ORARIO PER POTER TRADARE

if(Hour()==Orario_Fine && OrdersTotal()<2)

{

//CONTROLLA SE IL MASSIMO E' STATO ROTTO. CONDIZIONE BUY

double OpenPriceBuy = NormalizeDouble((Massimo+BufferPrice),Digits);

ticket=OrderSend(Symbol(),OP_BUYSTOP,Lotti,OpenPriceBuy,0,OpenPriceBuy-StopLossPrice,OpenPriceBuy+TakeProfitPrice,NULL,Magic,0,Blue);

//CONTROLLA SE IL MINIMO E' STATO ROTTO. CONDIZIONE SELL

double OpenPriceSell = NormalizeDouble((Minimo-BufferPrice),Digits);

ticket=OrderSend(Symbol(),OP_SELLSTOP,Lotti,OpenPriceSell,0,OpenPriceSell+StopLossPrice,OpenPriceSell-TakeProfitPrice,NULL,Magic,0,Red);

if (ticket != -1)

return(0);

}

}