如何编码? - 页 54

 

其他问题

现在我的EA是这样的

如果(FastMA2 SlowMA1)

{

ClosePositions();

OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-SLpips*Point,Ask+(45*Point),"" MAGIC,0,Blue);

return(0);

我希望像这样改变

1. 15分钟的时间火焰发生买入信号

2.如果当时5分钟时间的MA交叉买入信号已经出现,那么也要改变。

ClosePosition.并获得新的位置

如果这时5分钟时间的MA变化已经出现了卖出信号

等待5分钟的时间火焰改变买入信号。

然后ClosePosition.并获得新的头寸

请告诉我如何写这个程序。

 
附加的文件:
 

你好

我在寻找一些帮助,我有一个EA,我在使用演示,也在学习编码。我想知道如何在系统中添加一个注释,以显示4个进入标准中的哪一个被用于开仓。

任何帮助都将是巨大的

欢呼声

贝诺

 
Beno:
你好

我在寻找一些帮助,我有一个EA,我在使用演示,也在学习编码。我想知道如何在系统中添加一个注释,以显示4个进入标准中的哪一个被用来开仓。 例如,如果使用long2,则显示long2信号

任何帮助都将是巨大的

欢呼声

贝诺

在你的条件得到满足并使用Ordersend() 命令后,只要插入一个Comment()、Alert()或Print()语句。 无论你想用哪种方法。

就像这样。

if ( long2 == true)

{

Ordersend()。

{

Print(" long2信号被占用")。

}

}

希望这对你有帮助。

 

谢谢你,Wolfe

我不得不笑了,我输入了你建议的内容,它有点工作,但现在我只有评论,没有打开头寸。

bool Long = MAofRSI11>MAofRSI21 && MAofRSI12VolHL && RSIndex1HL2 && TrStop0.0 && SDLL && ma<Close[shift];

bool Short = MAofRSI11=MAofRSI22 && VolCH>VolHL && RSIndex1HLM && TrStop>Close[shift] && MOMClose[shift];

bool Long2 = MAofRSI11>HLM && MAofRSI12HLM && MAofRSI22VolHL && TrStop0.0 && SDLL && ma<Close[shift];

bool Short2 = MAofRSI11=HLM && MAofRSI21=HLM && VolCH>VolHL && TrStop>Close[shift] && MOMClose[shift]。

bool Long3 = RSIndex1-RSIndex2>20<HL2 && TrStop0.0 && SDLL && ma<Close[shift];

bool Short3 = RSIndex2-RSIndex1>20>HL1 && TrStop>Close[shift] && MOMClose[shift];

bool Long4 = zscore>0.0 && ma<Close[shift];

bool Short4 = zscoreClose[shift];

buysig = Long || Long2 || Long3 || Long4。

sellsig = Short || Short2 || Short3 || Short4。

closebuy=sellsig;

closesell=buysig。

如果(curprof>=AccountBalance()*ProfitExit/100.0) {

exit=true。

}

如果(last>0 && (Time[0]-last)/(Period()*60)>=CancelOrderBars) {

remorder=true。

}

}

空白CheckForOpen(){

int res,tr;

//---- 卖出条件

co=CalculateCurrentOrders(Symbol())。

如果(sellsig && lastsig!=-1) {

co=CalculateCurrentOrders(Symbol())。

如果(co==0) {

如果 ( Short == true)

如果 ( Short2 == true)

如果 ( Short3 == true)

res = OpenStop(OP_SELLSTOP,LotsRisk(StopLoss), Low[shift]-OrderPipsDiff*Point, StopLoss, TakeProfit1) 。

Print(" Short signal taken ");

Print(" Short2 signal taken ");

Print(" Short3 signal taken ");

Print(" Short4 signal taken ");

}

lastsig=-1;

last=Time[0];

返回。

}

//---- 买入条件

if(buyysig && lastsig!=1) {

co=CalculateCurrentOrders(Symbol())。

如果(co==0) {

如果 ( Long == true)

如果 ( Long2 == true)

如果 ( Long3 == true)

如果 ( Long4 == true)

res = OpenStop(OP_BUYSTOP,LotsRisk(StopLoss), High[shift]+OrderPipsDiff*Point, StopLoss, TakeProfit1) 。

Print(" Long signal taken ");

Print(" Long2 signal taken ");

Print(" Long3 signal taken ");

Print(" Long4 signal taken ");

}

last=Time[0];

lastsig=1。

返回。

}

}

修正了它 谢谢

 

调试代码

你将如何以及在哪里使用这样的代码。我有一个零除 法的错误,我找不到如何解决的方法。

extern bool DEBUGGING = true

...

if(DEBUGGING && variableName == 0) Print("CodePoint 1 -- This variable is now " , variableName);

... 更多代码

if(DEBUGGING && variableName == 0) Print("CodePoint 2 -- This variable is now ", variableName);

... 更多代码

if(DEBUGGING && variableName == 0) Print("CodePoint 3 -- This variable is now ", variableName)。

...

 

你能帮助我吗?为什么在代码中存在许多错误?

这是为了计算SMMA:

for(j=0;j<Bars;j++)

{

for(i=0,sum=0;i<ma_period;i++)

{

sum=sum+Close[j+i]。

// buffer[j]=(sum-sum/ma_period+Close[j+i])/ma_period。

}

buffer[j]=(sum-sum/ma_period+Close[j])/ma_period。

}

这是为了计算LWMA

for(j=0;j<Bars;j++)

{

for(i=0,sum=0,sum1=0;i<ma_period;i++)

{

sum=sum+Close[j+i];

sum1=sum1+Close[j+i]*(j+i);

// buffer[j]=sum/ma_period。

}

buffer[j]=sum1/sum。

}

以及如何计算EMA?

 

关于指标的问题

大家好。

我被一个编程问题所困。有谁知道如何使用1个指标结果来改变另一个设置?例如,如果日线stockasti高于20,我希望移动平均线 为(x)。我试着让下面的代码工作,但不知道有什么用。我似乎不能让开关或if else命令起作用,也不能。

double fourhrUP;

double daystoch1 = iStochastic(NULL, PERIOD_D1,5, 3, 3, MODE_SMA, 0, MODE_MAIN,1) 。

double daystoch20 = 20;

如果(daystoch1 > daystoch20) four_hrUP = 5 。

double iMA( string symbol, int timeframe,four_hrUP, int ma_shift, int ma_method, int applied_price, int shift)

 
ajk:
大家好。

我在一个编程问题上卡住了。有谁知道如何使用1个指标结果来改变另一个设置?例如,如果日线stockasti高于20,我希望移动平均线为(x)。我试着让下面的代码工作,但不知道有什么用。我似乎不能让开关或if else命令起作用,也不能。

double fourhrUP;

double daystoch1 = iStochastic(NULL, PERIOD_D1,5, 3, 3, MODE_SMA, 0, MODE_MAIN,1) 。

double daystoch20 = 20;

如果(daystoch1 > daystoch20) four_hrUP = 5 ;

double iMA ( string symbol, int timeframe,four_hrUP, int ma_shift, int ma_method, int applied_price, int shift)

你的MA的变量在哪里?

也许这可以帮助你

doublema4hr= iMA( string symbol, int timeframe,four_hrUP, int ma_shift, int ma_method, int applied_price, int shift)

如果stoch计算在同一个循环中,比如说 "for(int shift=limit-1; shift>=0; shift--)",stoch代码应该是

double daystoch1 = iStochastic(NULL, PERIOD_D1,5, 3, 3, MODE_SMA, 0, MODE_MAIN,shift+1) 。

CMIIW

 

关于一个指标的小帮助 - 请看编码器

我正在测试一个MT4经纪商的平台,该平台在报价中使用小数点(pipettes)。 例如,欧元兑日元的报价为164.381,而不是164.38 - 这意味着点差有一个小数,如4.1点(而不是4)。

谁能告诉我如何修改下面的代码,使点差读数正确? 现在一个4.1点的点差在指标中读作41.0。 希望得到任何帮助。

//---- 点差

Spread=NormalizeDouble((Ask-Bid)/Point,1);

ObjectSetText("Spread Monitor1", "Spread:", 10, "Arial", labelColor)。

ObjectSetText("Spread Monitor2",DoubleToStr(Spread,1),10, "Arial", clockColor)。