if (OrderType()==OP_BUY && (Bid-8*D*Point)>OrderStopLoss()&&(Bid-8*D*Point)>OrderOpenPrice())
{chk=OrderModify(OrderTicket(),0,NormalizeDouble(Bid-7*Point,Digits),NormalizeDouble(OrderOpenPrice()+25*D*Point,Digits),0,0);}
......但同样的一个卖出 订单却没有设置SL...
if (OrderType()==OP_SELL &&(Ask+8*D*Point)<OrderStopLoss()&&(Ask+8*D*Point)<OrderOpenPrice())
{chk=OrderModify(OrderTicket(),0,NormalizeDouble(Ask+7*Point,Digits),NormalizeDouble(OrderOpenPrice()-25*D*Point,Digits),0,0);}
if (OrderSymbol()==Symbol()&&OrderType()==OP_SELL&&OrderLots()<=Lot*3&&(Ask+(Tral+TP)*D*Point)<OrderOpenPrice()&&((OrderStopLoss()!=0&&(Ask+Tral*D*Point)<OrderStopLoss())||OrderStopLoss()==0))
{chk=OrderModify(OrderTicket(),0,NormalizeDouble(Ask+Tral*D*Point,Digits),NormalizeDouble(OrderOpenPrice()-Stepp*D*Point,Digits),0,0);}}
for(inti=1; i<=OrdersTotal(); i++)//Цикл по всем ордерам,..{//отражённым в терминалеif(OrderSelect(i-1,SELECT_BY_POS)==true)//Если есть следующий{// Здесь должен выполняться ..// ..анализ характеристик ордеров }}//Конец тела цикла
论文:运动=生命,休息=死亡。日志上写的是什么? 它在右下角的两个标签上
如果我有一个 - 我会检查并修复它......
关于交易、自动交易系统和策略测试的论坛
初学者的问题 MQL4 MT4 MetaTrader 4
Ilya Prozumentov, 2017.06.11 13:53
有一个用于处理数组的类模板。对于这个模板类,我们需要实现排序,因为数组可以存储复杂的数据类型。比如说。
ArrayList<PP*> *dde; // PP - класс
我可以为简单和复杂的类型写不同的函数,但编译器不理解函数是由数据类型严格限定的,并一直在骂人。
'<' - 非法操作 使用ArrayList.mqh
所以我决定嵌入这个界面。
该结构的所有部分都可以编译。但如果你试图宣布。
ArrayList<PP*> *dde; // PP - класс
然后,在编译文件时,出现了这些错误。'QuickSorts' - 模板不匹配 varQSort.mqh /*错误1*/。
'=' - 类型不匹配 ArrayList.mqh /*错误 2*/。
P.S.我应该在代码中修正什么以消除这种类型不匹配?我不明白为什么一开始就发生了这种情况。
'<' - 非法操作 使用varQSort.mqh
在这个构架中也困扰着我。我想摆脱的正是这个错误。但我理解这个错误,而我不理解那两个。
我需要,例如在星期一,如果我需要打开2或3个交易,该函数比较时间并发送管道,但我到目前为止只有一个时间比较。
因为当你按下 "下载 "按钮时,6 000 000条报价将被下载。 不是每个人都想用报价数据填满硬盘,等待很长时间直到它们被下载,然后从报价表中删除不必要的数据。
你好,亲爱的...你能告诉我为什么为买入 订单指定的追踪止损 代码能正常工作吗...
......但同样的一个卖出 订单却没有设置SL...
...原因很可能是在条件(Ask+8*D*Point)<OrderStopLoss(), 如果我们删除它,SL 将被设置,但追踪 止损 在没有指定条件的情况下工作不正确 ...
对于买入 订单,如果OrderStopLoss()==0,则 条件(Bid-8*D*Point)>OrderStopLoss(),可以正确接受(即某个值>0)...
...但条件(Ask+8*D*Point)<OrderStopLoss(),OrderStopLoss()==0是不正确的(即 某些值<0
) ...请告知如何在代码中正确制定所需的条件(Ask+8*D*Point)<OrderStopLoss(),以便
在卖出
订单中正确使用追踪止损。
我感谢所有提前答复的人
。下午好:有一个功能,指标会读取tick历史 文件。但它只被读取一次,当指标被加载或更新时。我怎样才能使它在每次出现零条的第一个刻度时都能读出?
void ProcessOldCandles(int limit, TickStruct &lastTick)
{
int hTicksFile = FileOpen(Symbol() + ".tks", FILE_BIN | FILE_READ | FILE_SHARE_READ | FILE_SHARE_WRITE);
if (hTicksFile < 1)
return;
TickStruct tick;
while (!IsStopped())
{
if (!IsReadTimeAndBidAskOfTick(hTicksFile, tick))
return;
if (tick.time >= Time[limit])
break;
}
lastTick = tick;
int barIndex = iBarShift(NULL, 0, tick.time);
while (barIndex >= 0)
{
if (!IsReadTimeAndBidAskOfTick(hTicksFile, tick))
return;
if (!IsTickBelongToBar(tick, barIndex))
barIndex = iBarShift(NULL, 0, tick.time);
ProcessOneTick(barIndex, tick, lastTick);
}
FileClose(hTicksFile);
你好,亲爱的...你能告诉我为什么为买入 订单指定的追踪止损 代码能正常工作吗?
......但同样的一个卖出 订单却没有设置SL...
...原因很可能是在条件(Ask+8*D*Point)<OrderStopLoss(), 如果我们删除它,SL 将被设置,但追踪 止损 在没有指定条件的情况下工作不正确 ...
对于买入 订单,当OrderStopLoss()==0 时,条件(Bid-8*D*Point)>OrderStopLoss() 被正确采取(即某个值>0) ...
...但是,当OrderStopLoss()==0时,条件(Ask+8*D*Point)<OrderStopLoss() 被认为 是不正确的(即某些值<0
) ...请告知如何在代码中正确制定所需的条件(Ask+8*D*Point)<OrderStopLoss(),以便
在卖出
订单中正确使用追踪止损。
我感谢所有提前答复的人
。大家好......像这样的事情在这个论坛的分支中是非常少的活动......问题是这样解决的......
...它有点长,但它的作用...谁知道如何让它变短,你能不能缩短它,我很感激......我们其他人可以按原样使用它。
输入功能
OrderCloseByTicket (542534564)
按票数关闭订单,满载而归。
这样,你就不必指定手数、价格、滑点。
类似于在终端的订单上点击一个十字。
输入功能
订单关闭(OrderCloseByPos) (0)
按位置关闭订单。
然后就没有必要规定这些繁琐的结构了。
你好!两个负数q和w的比较是不正确的,当它们相等时,if运算符认为一个比另一个大.错误是什么?当q=-0.0002,w也是-0.0002,res12=false,为什么?