问吧! - 页 61

 

代码问题

请不要理会这个帖子。这个设置做了我需要做的事情。谢谢你开始帮助我们。

我修改了一个EA,使其与几种方法一起工作。我做了一些研究,但不知道如何在开单时将EA的名称添加到评论栏中。谁能给我指出正确的方向。

我希望有一个简单的字符串命令,我可以把它整合到我修改的任何EA中,这样在测试过程中运行多个EA时,订单就可以更好地组织起来。

谢谢你的时间和洞察力。

这里是我需要修改的非修改部分之一,以输入EA的评论。

if(ObjectFind(BuyStop_TrendName) == 0)

{

SetObject("Active" + BuyStop_TrendName,

ObjectGet(BuyStop_TrendName, OBJPROP_TIME1),

ObjectGet(BuyStop_TrendName, OBJPROP_PRICE1) + BuyStop_StepActive*Point,

ObjectGet(BuyStop_TrendName, OBJPROP_TIME2),

ObjectGet(BuyStop_TrendName, OBJPROP_PRICE2) + BuyStop_StepActive*Point,

ObjectGet(BuyStop_TrendName, OBJPROP_COLOR));

SetObject("Prepare" + BuyStop_TrendName,

ObjectGet(BuyStop_TrendName, OBJPROP_TIME1),

ObjectGet(BuyStop_TrendName, OBJPROP_PRICE1) - BuyStop_StepPrepare*Point,

ObjectGet(BuyStop_TrendName, OBJPROP_TIME2),

ObjectGet(BuyStop_TrendName, OBJPROP_PRICE2) - BuyStop_StepPrepare*Point,

ObjectGet(BuyStop_TrendName, OBJPROP_COLOR));

vA = NormalizeDouble(ObjectGetValueByShift("Active"+BuyStop_TrendName,0),Digits);

vM = NormalizeDouble(ObjectGetValueByShift(BuyStop_TrendName,0),Digits);

vP = NormalizeDouble(ObjectGetValueByShift("Prepare"+BuyStop_TrendName,0),Digits);

sl = vA - BuyStop_StopLoss*Point;

tp = vA + BuyStop_TakeProfit*Point;

if(Ask = vP && OrderFind(MagicBuyStop) == false)

if(OrderSend(Symbol(), OP_BUYSTOP, BuyStop_Lot, vA, 3, sl, tp,"", MagicBuyStop, 0, Green) < 0)

Print("Err (", GetLastError(), ") Open BuyStop Price= ", vA, " SL= ", sl," TP= ", tp);

if(Ask = vP && OrderFind(MagicBuyStop) == true &&

glbOrderType == OP_BUYSTOP)

{

OrderSelect(glbOrderTicket, SELECT_BY_TICKET, MODE_TRADES);

if(vA != OrderOpenPrice())

if(OrderModify(glbOrderTicket, vA, sl, tp, 0, Green) == false)

Print("Err (", GetLastError(), ") Modify BuyStop Price= ", vA,

" SL= ", sl, " TP= ", tp);

}

if(Ask < vP && OrderFind(MagicBuyStop) == true &&

glbOrderType == OP_BUYSTOP && AutoClose==true)

{

OrderDelete(glbOrderTicket);

}

}

[/code]

I am not sure of the logic but can I just input the CommentName in the following location? I have not tested this but it compiles fine.

[code]

if(OrderSend(Symbol(), OP_BUYSTOP, BuyStop_Lot, vA, 3, sl, tp,"CommentName", MagicBuyStop, 0, Green) < 0)

Print("Err (", GetLastError(), ") Open BuyStop Price= ", vA, " SL= ", sl," TP= ", tp);

附加的文件:
 

感谢Coderguru为我们提供的服务!

我有一个关于警报的问题。

我想改变这段代码中的警报类型,这样它就会播放我选择的wav文件,而不会出现弹出窗口买入卖出的情况。当分形 出现时,只播放wav文件。

这段代码应该是怎样的。我已经附上了sFractals警报指标。

如果(PrevSignal <= 0 )

{

if(ExtDownFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = 1;

Alert("sFractals (", Symbol(), " , " , Period(), " )- 买入!!")。

}

}

如果(PrevSignal >= 0)

{

如果(ExtUpFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = -1;

Alert("sFractals (", Symbol(), " , " , Period(), " )- 卖出!!!")。

}

}

附加的文件:
sfractals.mq4  8 kb
 
proverbs:
我不清楚其中的逻辑,但我是否可以在以下位置输入CommentName?我没有测试过这个,但它的编译很好。

if(OrderSend(Symbol(), OP_BUYSTOP, BuyStop_Lot, vA, 3, sl, tp,"CommentName", MagicBuyStop, 0, Green) < 0)

Print("Err (", GetLastError(), ") Open BuyStop Price= ", vA, " SL= ", sl," TP= ", tp);

这样就可以正常工作了。 你也可以在那个地方放一个字符串变量。

 
Drivefast:
感谢Coderguru在这里为我们服务!

我有一个关于警报的问题。

我想改变这段代码中的警报类型,这样它就会播放我选择的wav文件,而不会出现弹出窗口买入卖出的情况。当分形出现时,只播放wav文件。

这段代码应该是怎样的。我已经附上了sFractals警报指标。

如果(PrevSignal <= 0 )

{

if(ExtDownFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = 1;

Alert("sFractals (", Symbol(), " , " , Period(), " ) - 买入!!")。

}

}

如果(PrevSignal >= 0)

{

如果(ExtUpFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = -1;

Alert("sFractals (", Symbol(), " , " , Period(), " ) - 卖出!!!")。

}

}

我认为CodersGuru死了还是什么。 他已经有一段时间没有出现了。

总之....,添加这个语句。

PlaySound("alert.wav")。

....,其中 "alert.wav "是你要播放的文件的名称。

 
ryanklefas:
我认为CodersGuru死了还是什么。 他已经有一段时间没有出现了。

总之....,添加这条语句。

PlaySound("alert.wav")。

.... 其中 "alert.wav "是你要播放的文件的名称。

谢谢你对我的帖子作出回应。

我不太清楚在代码中把PlaySound("alert.wav");放在 哪里。

我可以直接删除这部分吗?Alert("sFractals (", Symbol(), " , " , Period(), " )- 买入!!!")。

或者,是否需要像这样的内容?

PrevSignal = 1;

PlaySound("alert.wav")。

Alert("sFractals (", Symbol(), ", ", Period(), ")- 买入!!")。

 

是的。 只要用声音取代整个警报。

if(PrevSignal <= 0 )

{

if(ExtDownFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = 1;

PlaySound("alert.wav");

}

}

if(PrevSignal >= 0)

{

if(ExtUpFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = -1;

PlaySound("alert.wav");

}

}
 

感谢ryanklefas的帮助,它现在就像我想要的那样工作了。

 

询问关于排序的问题

我有一个二维的数据表,存储在一个二维数组中。我想做一些操作,比如根据该数据表的任何一列进行排序。

ArraySort()函数,在指令中,可以对数组的第一维进行排序。我不知道这对我有什么用。

对MetaTrader的数据表排序有什么建议吗?

 

专家顾问之间的沟通

你好。

我想知道是否有办法在专家顾问之间进行交流,比如我有EA A作为主策略

和备份EA B作为备份策略

我把它放在两个不同的交易对上。

我想在EA A处于缩减状态时触发,启动EA B......

当EA A和EA B的累计利润达到某个目标点时。

关闭EA A和EA B的所有头寸

是否可以这样做?

 
veematics:
你好。

我想知道是否有办法在专家顾问之间进行沟通,比如我有EA A作为主策略

和备份EA B作为备份策略

我把它放在两个不同的对子上...

我想在EA A处于缩减状态时触发,启动EA B......

当EA A和EA B的累计利润达到某个目标点时。

关闭EA A和EA B的所有头寸

是否可以这样做?

我认为全局变量就是你要找的东西。你可以在MetaEditor参考部分查看 它们。要查看您当前的全局变量,请在MT4终端按F3。