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がやっています。邪魔をしないようにしよう。
言いたかったこと...全て自分が分かりやすいように書く(個人的に/個人的に)、コピーペーストでコードを引っ張るのはやめましょう。
と、大幅に簡略化したロボットの骨格はこんな感じです。
ビールは不思議と人を優しくする)
保留中の注文は 1つですか、それとも異なる方向で2つですか?
いつもシングルで保留しているものを出しています。
試してみる、頼んでみる
試してみる、頼んでみる
どうなるか、またお知らせします。
どなたか、この動作の理由を説明してください。
注文を開始する
を選択すると、Expert Advisorがそれを修正します。
そして、このクソが起こる
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で起きて、他のペアでは売りしか起きないこと
どなたか、この動作の理由を説明していただけませんか?
注文を開始する
を選択すると、Expert Advisorがそれを修正します。
そして、このクソが起こる
面白いのは、USDJPYにだけ発生し、他は全て正常なことです
何かを理解しようと思ったら、最小限のサイクルで最大限の有益な情報を得る方法を学ばなければならない...。
何かを理解するためには、最小限のサイクルで最も有用な情報を引き出す方法を学ぶこと...。
分かっているのに話すのは良くない...。
有用な情報を最大限に活用する "アドバイスの手助けをします。
どなたか、この動作の理由を説明してください。
注文を開始する
を選択すると、Expert Advisorがそれを修正します。
そして、このクソが起こる
面白いのは、USDJPYで起きて、他のペアでは売りしか起きないこと
コードを書いたEAはこのように動作するのでしょうか?