如何编码? - 页 47

 

谢谢 MrPip

我基本上明白你的意思了,我会在之前给它,如果我被卡住了再问。

欢呼

 
MrPip:
以下是红色的更正。 罗伯特

谢谢你,罗伯特,这很有帮助。

 

使用MTF指标的条形图倒计时

MTF=多时间框架指标

double BarCountDownInSec()

{

双重g。

g=Time[0]+Period()*60-TimeCurrent()。

return(g);

}

上述函数 给出了当前图表中各条的第二次倒数。因此,如果放在一个5分钟的图表上,它将显示每个5分钟的条形图的第二次倒计时。

问:当我在5分钟图表中时,我如何获得15分钟条形图(即3个5分钟条形图)的秒数倒计时,因此从6.00到6.15的15分钟倒计时,然后是6.15到6.30,而我在5分钟图表中?

 

我的编程问题(BUG)

你好。

谁能帮我清除这个错误。我已经快成功了,只是除非我重新编译代码,否则绘制直方图不会出现。

请帮助我!!请帮助我,请帮助我

谢谢

附加的文件:
 

icustom问题

我应该为EA的iCustom部分使用的这个indi的字符串名称是什么?

我已经尝试过

MT4-LevelStop-Reverse-vBO-4

MT4-LevelStop-Reverse-vBO-4

MT4-LevelStop-Reverse

vBO-4

vB0.4

vtsbh2483-

MT4-LevelStop-Reverse-"+ indicator_version + "(

所以我不知道接下来该怎么做。

还是需要输入ATRMode、Manual Mode等字符串?

任何帮助都将是巨大的

附加的文件:
 

谁能看到这个错误?我看不出这段代码中的错误在哪里。我一直得到。任何帮助指出这一点都是很好的。谢谢

LongSig变量未定义

//+------------------------------------------------------------------+

//|计算未结头寸

//+------------------------------------------------------------------+

int CalculateCurrentOrders() {

买入=0;卖出=0。

string symbol=Symbol();

//----

for(int i=0;i<OrdersTotal();i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) 继续。

如果(OrderSymbol()==Symbol() && OrderMagicNumber()==expertId)

{

如果(OrderType()==OP_BUY || OrderType()==OP_BUYSTOP) buys++;

如果(OrderType()==OP_SELL || OrderType()==OP_SELLSTOP) sells++;

}

}

//---- 返回订单量

if(buys>0) return(buys);

否则返回(-sells)。

}

//+------------------------------------------------------------------+

//| 检查未平仓订单情况 |

//+------------------------------------------------------------------+

空白 CheckForSignals() {

buysig=false;

sellsig=false;

closebuy=false;

closesell=false。

double MOM = iCustom (NULL,0, "Momentum-ZL",MOMPeriod,0,shift);

double SRL = iCustom (NULL,0, "MT4-LevelStop-Reverse-vBO-4",UseATRMode,NonATRStopPips,ATRPeriod,ATRMultiplier,ATRSmoothing,UpArrowColor,DnArrowColor,ArrowDistance,233)

double SRS = iCustom (NULL,0, "MT4-LevelStop-Reverse-vBO-4",UseATRMode,NonATRStopPips,ATRPeriod,ATRMultiplier,ATRSmoothing,UpArrowColor,DnArrowColor,ArrowDistance,234);

double QQE_RsiMa = iCustom(NULL,0, "QQE",0,shift);

double QQE_TrLevelSlow = iCustom(NULL,0, "QQE", 1, shift);

double QQE_RsiMaPrev = iCustom(NULL,0, "QQE",0,shift + 1);

double QQE_TrLevelSlowPrev = iCustom(NULL,0, "QQE", 1, shift + 1);

double Pivot = iCustom (NULL,0, "Pivot Points Multitimeframe",midpivots,Fhr,daily,weekly,monthly,1,shift)

bool LongSig = QQE_RsiMaPrev QQE_TrLevelSlow >50.0;

bool ShortSig = QQE_RsiMaPrev > QQE_TrLevelSlowPrev && QQE_RsiMa < QQE_TrLevelSlow<50.0;

bool LongSig2 = MOM>0.0;

bool ShortSig2 = MOM<0.0;

bool LongSig3 = SRL>Pivot;

bool ShortSig3 = SRS<Pivot;

buysig = LongSig && LongSig2 && LongSig3;

sellsig = ShortSig && ShortSig2 && ShortSig3;

closebuy=sellsig;

closesell=buysig。

}

空白 CheckForOpen() {

if (last==Time[0]) return;

int res,ord;

双重入口,停止,利润。

ord=CalculateCurrentOrders();

如果(ord!=0) CheckForClose();

ord=CalculateCurrentOrders()。

//---- 买入条件

如果(buyys<ConsecutiveTrades && buysig) {

res=OpenAtMarket(OP_BUY,Lots)。

如果(res<0) Print("错误打开BUY订单:",ErrorDescription(GetLastError())。

否则 last=Time[0];

}

//---- 卖出条件

如果(-sells<ConsecutiveTrades && sellsig) {

res=OpenAtMarket(OP_SELL,Lots)。

如果(res<=0) Print("错误打开SELL订单:",ErrorDescription(GetLastError())。

否则 last=Time[0];

}

}

int OpenAtMarket(int mode,double lot) {

int res,tr,col;

double openprice,sl,tp;

tries=0。

while (res<=0 && tries<OrderTriesNumber) {

tr=0; while (tr<5 && !IsTradeAllowed() ) { tr++; Sleep(2000); }

RefreshRates()。

如果(模式==OP_SELL) {

openprice=Bid;

col=Red;

} else {

//openprice=nd(Ask);

openprice=Ask;

col=Blue;

}

res=OrderSend(Symbol(),mode,lot,openprice,slipage,tp,EAName+expertId,expertId,0,col)。

tries++;

}

return(res);

}

固定IT

 

试试你名单上的第一个数字0,而不是字母O的vB0-4。

罗伯特

Beno:
这个indi的字符串名称是什么,我应该用在EA的iCustom部分。

我已经尝试了

MT4-LevelStop-Reverse-vBO-4

MT4-LevelStop-Reverse-vBO-4

MT4-LevelStop-Reverse

vBO-4

vB0.4

vtsbh2483-

MT4-LevelStop-Reverse-"+ indicator_version + "(

所以我不知道接下来该怎么做。

还是需要输入ATRMode,Manual Mode等字符串名称?

任何帮助都将是巨大的
 

谢谢你,Pips先生

已整理好

 
MrPip:
下面是红色的更正。 Robert

我试着这样做,但似乎不起作用......我只想每天做一次交易。

for(int a=0;a<OrdersTotal();a++)

{

如果(OrderSelect(a,SELECT_BY_POS,MODE_TRADES) == true)

{

如果(OrderSymbol()== Symbol() && OrderMagicNumber()== Magic_Number)

{

如果(TimeDay(OrderOpenTime())>=TimeDay(TimeCurrent()))Trade = false。

如果(TimeDay(OrderOpenTime()) < TimeDay(TimeCurrent()))Trade = true。

}

}

}
 
antone:
我试过这样做,但似乎不起作用......我只想每天做一次交易。

我在其他EA中使用过这个方法,而且工作正常。

检查 的是今天关闭的交易,而不是今天打开的交易。

开始时的用法是

if (LastTradeClosedToday()) return(0);

//这里的代码用于打开新的交易

//+------------------------------------------------------------------+

//| LastTradeClosedToday |

//| 检查历史记录,看最后一笔交易是否在今天结束。

//+------------------------------------------------------------------+

bool LastTradeClosedToday()

{

int cnt, total;

bool Closed;

total = HistoryTotal()。

for (cnt = total - 1; cnt >= 0; cnt--)

{

OrderSelect (cnt, SELECT_BY_POS, MODE_HISTORY)。

如果(OrderSymbol()!=Symbol()) 继续。

如果(OrderMagicNumber()!=MagicNumber)继续。

关闭 = false。

如果(OrderType() == OP_BUY)

{

如果(TimeDay(OrderCloseTime()) == TimeDay(TimeCurrent()) )

{

Closed = true。

}

cnt = 0。

}

如果(OrderType() == OP_SELL)

{

如果(TimeDay(OrderCloseTime()) == TimeDay(TimeCurrent()) )

{

关闭 = 真。

}

cnt = 0。

}

}

返回(Closed)。

}