int ticket=-1; // тикет открытого ордераbool inited=false; // признак завершения инициализацииintOnInit()
{
ticket=-1;
inited=false;
// ещё надо проверить параметры, но пока чёрт с ними// пробуем загрузить прежнее состояниеif (LoadState()) {
// из файла, базы или глоб.переменных загрузилисьif (!CheckState()) {
// проверили, плохо всё..
ClearState(); // удалить и поругатьсяAlert("Усё пропало, шеф !");
returnINIT_FAILED();
}
}
return(INIT_SUCCEEDED);
}
voidOnDeinit(constint reason)
{
if (inited) {
// инициализация была проведена, стейт мог уже менятся во время работы
SaveState(); // сохраняем куда-то там
}
}
voidOnTick()
{
//// ЧТОБЫ БЫ БЫЛО ХОРОШО, //// НЕ БОЛЕЕ 1-го ПРИКАЗА Open/Close/Modify на тик//// И ЗАВЕРШИТЬ ВСЁ ПО БЫСТРОМУif (!inited) {
// связь есть, тики идут// довести инициализацию до нужной кондицииif (!DoInit()) {
// не довеласьAlert("вот же блин...");
ExpertRemove();
} else {
// в DoInit проставлен корректный ticket
inited=true;
}
return;
}
// всё проиничено, ticket или -1 если нет нифига или реально тикет//// РАЗБОРЫ С ТИКЕТАМИif (ticket<0) {
// нет открытых ордеров// может открыть/переоткрыть ?
} else {
if (!OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) {
// что-то не так с синхронизацией, просто пропустим тикreturn;
}
if (OrderCloseTime()!=0) {
// ордер закрылся ручками или по стопам/тейкам (или стопаут, приплыли)
OnCloseOrder(); // обработать, разобраться
ticket=-1; // нет у нас больше тикета..// в этот тик больше не успетьreturn;
} else {
if ((OrderStopLoss()==0 && SL!=0) || (OrderTakeProfit()==0 && TP!=0)) {
// свежачок - надо ему выстаить Тейк и/или стоп
} else {
// для реала - проверять сработку Sl/Tp на ГЕПАХ, ЭТО ВАЖНО
}
}
}
//// РАЗБОРЫ с БАРАМИ
CheckForOnBar();
/// и так далее...
}
voidOnTimer()
{
// тики завершаем быстро-быстро, поэтому открытия баров дополнительно проверяем по таймеру
CheckForOnBar();
}
为了方便起见,拿我的源代码来说,它的逻辑是可行的,除了我描述的问题,我不太明白,我的脑袋在沸腾,但我没有任何进展。
我有一种感觉,机器人越来越强大,我不不喜欢它,当我下订单或不想交易时,因为我已经下了,我不能打开它,因为我已经下了,它只需要打开订单。
@MakarFX已经在做了。让我们不要碍手碍脚。
我想说的是......写所有的东西,让它对你来说很清楚(个人/个人),不要用复制粘贴的方式拉动代码。
和一个大大简化的机器人骨架看起来像这样。
啤酒能创造奇迹,让人们变得更善良。)
你是下一个挂单 还是两个不同方向的挂单?
我总是放出一个待定的单子。
试一试,求一求
试一试,求一求
我会让你知道发生了什么。谢谢你的帮助。
谁能解释一下这种行为的原因?
我开了一个订单
那么专家顾问就会修改它
然后发生了这样的事情
2021.07.29 18:53:58.313 '60744458': order #1639674290 sell 0.01 USDJPY closing at 0.000 failed [Off quotes] 2021.07.29 18:53:57.647 '60744458': close order #1639674290 sell 0.01 USDJPY at 109.519 sl: 0.000 tp: 0.000 at price 0.000
有趣的是,它发生在美元兑日元上,而在其他货币对上只卖出。
谁能解释一下这种行为的原因?
我开了一个订单
那么专家顾问就会修改它
然后发生了这样的事情
有趣的是,它只发生在USDJPY上,而其他的都是好的。
如果你想了解一些东西,你必须学会如何在最小的周期内获得最大的有用信息......
要理解一件事,就要学会如何在最少的周期内拉出最有用的信息......
当你知道该怎么做的时候,就好说话了......
帮助提供关于如何 "从有用的信息中获得最大利益 "的建议
谁能解释一下这种行为的原因?
我开了一个订单
那么专家顾问就会修改它
然后发生了这样的事情
有趣的是,它发生在美元兑日元上,而在其他货币对上只卖出。
你写的那个EA的代码是这样工作的吗?