voidOnTick()
{
// Получим значение индикатора
dMA = iMA(Symbol(), 0,PeriodMA, MovingShift, MODE_SMA, PRICE_CLOSE, 0); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.// Если нет открытых ордеров, то входим в условиеif(bCheckOrders() == true)
{
// Если появился сигнал на покупку, то откроем ордер на покупкуif(bSignalBuy() == true)
vOrderOpenBuy();
// Если появился сигнал на продажу, то откроем ордер на продажуif(bSignalSell() == true)
vOrderOpenSell();
}
// Проверяем, вышел ли текущий баланс по открытому ордеру за вилку из внешних переменных CountLoss и CountProfitif(GetProfitFromStart()>CountProfit || GetProfitFromStart()<CountLoss*-1)
{
// Если да, то закроем ордер по текущей цене, не дожидаясь стопа или тейка
CloseOrder();
}
DrawLABEL("lab_Take",1,5,0,Color(GetProfitFromStart()>0,Lime,Red),StringConcatenate("Profit: ",DoubleToStr(GetProfitFromStart(),2),AC));
}
voidOnTick()
{
// Получим значение индикатора
dMA = iMA(Symbol(), 0,PeriodMA, MovingShift, MODE_SMA, PRICE_CLOSE, 0); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.// Если появился сигнал на покупку, то откроем ордер на покупкуif(bSignalBuy() == true)
vOrderOpenBuy();
// Если появился сигнал на продажу, то откроем ордер на продажуif(bSignalSell() == true)
vOrderOpenSell();
// Проверяем, вышел ли текущий баланс по открытому ордеру за вилку из внешних переменных CountLoss и CountProfitif(GetProfitFromStart()>CountProfit || GetProfitFromStart()<CountLoss*-1)
{
// Если да, то закроем ордер по текущей цене, не дожидаясь стопа или тейка
CloseOrder();
}
DrawLABEL("lab_Take",1,5,0,Color(GetProfitFromStart()>0,Lime,Red),StringConcatenate("Profit: ",DoubleToStr(GetProfitFromStart(),2),AC));
}
//+-----------------------------------------------------------------------------------------------+//| Функция открытия ордера на покупку |//+-----------------------------------------------------------------------------------------------+void vOrderOpenBuy()
{
// Если нет открытых ордеров, то входим в условиеif(bCheckOrders() == true)
{
// Тикет ордераint iOTi = 0;
iOTi = OrderSend(Symbol(), OP_BUY, LOT(), Ask, Slippage, 0, 0, "", Magic, 0, clrNONE);
// Проверим открылся ли ордерif(iOTi > 0)
// Есди да, то выставим уровни убытка и прибыли
vOrderModify(iOTi);
else// Если нет, то получим ошибку
vError(GetLastError());
}
}
//+-----------------------------------------------------------------------------------------------+//| Функция открытия ордера на продажу |//+-----------------------------------------------------------------------------------------------+void vOrderOpenSell()
{
// Если нет открытых ордеров, то входим в условиеif(bCheckOrders() == true)
{
// Тикет ордера int iOTi = 0;
iOTi = OrderSend(Symbol(), OP_SELL, LOT(), Bid, Slippage, 0, 0, "", Magic, 0, clrNONE);
// Проверим открылся ли ордерif(iOTi > 0)
// Есди да, то выставим уровни убытка и прибыли
vOrderModify(iOTi);
else// Если нет, то получим ошибку
vError(GetLastError());
}
}
不要なコードを削除しました。
では常に false になっています。
どういう意味ですか?
このデータを異なるTFで計算できるようにすること。
クラスによる実装をされている方はいらっしゃらないでしょうか。
クラスのロジックを理解したいので、勉強になると思います。
こんにちは、あなたは私が問題を解決するのを助けることができます。
1つ以上のトレードを開けないようにしてほしい。EAのロジックは、前の注文が決済されるまで、次の注文は開かないというものですが、このような長いローソク足で一連の案件が開くことがあります。このような状況を防ぐために、コードに何を追加すればよいかアドバイスをお願いします。
コードスニペット:
あの...iOTiのvOrderModify()では常に1ですが、これはチケットではなく、OrderSend()操作のポジティブな結果、すなわち値 "1 "なのです。
ありがとうございます。 オリジナルのコードは私のものではないので、むやみに変更することはありません。効くし、効くし。
これで私の問題は解決するのでしょうか?
こんにちは、あなたは私が問題を解決するのを助けることができます。
1つ以上のトレードを開けないようにしてほしい。EAのロジックは、前の注文が決済されるまで、次の注文は開かないというものですが、このような長いローソク足で一連の案件が開くことがあります。このような状況を防ぐために、コードに何を追加すればよいかアドバイスをお願いします。
コードスニペット:
Expert Advisorにインジケータの統合を実装した経験を共有 できる人を探しています。
このデータを異なるTFで計算できるようにすること。
クラスによる実装をされている方はいらっしゃらないでしょうか。
クラスのロジックを理解したいので、勉強になると思います。
rates_total = Bars time[] = Time[] open[] = Open[] high[] = High[] low[] = Low[] close[] = Close[]
OnTick() を表示する
ありがとうございます。 元のコードは私のものではないので、むやみに変更しないようにしています。効くし、効くし。
これで何か私の問題が解決するのでしょうか?
OnTick() から bCheckOrders() を削除して、ハイライト 表示にしてみてください。
なーんだ、勘違いしてた、OrderSend()はチケットか-1を返すから、何も問題ないんだ。
なるほど。
今後のために覚えておこうと思います。