Вещественные типы (double, float) - Типы данных - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
voidOnTick()
{
// Получим значение индикатора
dMA = iMA(Symbol(), 0,PeriodMA, MovingShift, MODE_SMA, PRICE_CLOSE, 0); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0. TrailingOrders();// Если нет открытых ордеров, то входим в условиеif(CountOrders()==0)
{
// Если появился сигнал на покупку, то откроем ордер на покупкуif(bSignalBuy() == true)
vOrderOpenBuy();
// Если появился сигнал на продажу, то откроем ордер на продажуif(bSignalSell() == true)
vOrderOpenSell();
}
DrawLABEL("nextlot",1,5,0,Color1(),StringConcatenate("CURRENT LOT: ",DoubleToStr(LOT(),2)));
DrawLABEL("currentlot",1,5,0,Color2(),StringConcatenate("NEXT LOT: ",DoubleToStr(LOT(),2)));
}
トレーリングストップは、価格がTPの方向に動いたら発動し、価格が引き戻されたら何もしないようにします。SLレベルはTPの方向にのみ進み、ロールバックしてはいけません。
あのね
と書きました。
ストップ&テイクは無限に ある
2021.12.23 21:07:51.634 2021.12.21 21:12:20 111 AUDUSD,M15: Buy order modification successful!
2021.12.23 21:07:51.634 2021.12.21 21:12:20 111 AUDUSD,M15: modify #2 buy 0.02 AUDUSD at 0.71028 sl:0.71288 tp:0.72038 ok
2021.12.23 21:07:51.634 2021.12.21 21:12:18 111 AUDUSD,M15: Buy Order Modification successful!
2021.12.23 21:07:51.634 2021.12.21 21:12:18 111 AUDUSD,M15: modify #2 buy 0.02 AUDUSD at 0.71028 sl: 0.71268 tp: 0.72018 ok
2021.12.23 21:07:51.634 2021.12.21 21:12:16 111 AUDUSD,M15: Buy Order Modification successful!
2021.12.23 21:07:51.634 2021.12.21 21:12:16 111 AUDUSD,M15: modify #2 buy 0.02 AUDUSD at 0.71028 sl: 0.71248 tp: 0.71998 ok
2021.12.23 21:07:51.634 2021.12.21 21:12:15 111 AUDUSD,M15: Buy Order Modification successful!
2021.12.23 21:07:51.634 2021.12.21 21:12:15 111 AUDUSD,M15: modify #2 buy 0.02 AUDUSD at 0.71028 sl: 0.71228 tp: 0.71978 ok
2021.12.23 21:07:51.634 2021.12.21 21:12:13 111 AUDUSD,M15: 買い注文修正成功!
2021.12.23 21:07:51.634 2021.12.21 21:12:13 111 AUDUSD,M15: modify #2 buy 0.02 AUDUSD at 0.71028 sl: 0.71208 tp: 0.71958 ok
2021.12.23 21:07:51.634 2021.12.21 21:12:11 111 AUDUSD,M15: Buy Order Modification successful!
2021.12.23 21:07:51.634 2021.12.21 21:12:11 111 AUDUSD,M15: modify #2 buy 0.02 AUDUSD at 0.71028 sl:0.71188 tp:0.71938 ok
2021.12.23 21:07:51.634 2021.12.21 12:12:10 111 AUDUSD,M15: Buy Order Modification successful!
2021.12.23 21:07:51.634 2021.12.21 21:12:10 111 AUDUSD,M15: modify #2 buy 0.02 AUDUSD at 0.71028 sl: 0.71168 tp: 0.71918 ok
2021.12.23 21:07:51.634 2021.12.21 21:12:08 111 AUDUSD,M15: Buy Order Modification successful!
2021.12.23 21:07:51.634 2021.12.21 21:12:08 111 AUDUSD,M15: modify #2 buy 0.02 AUDUSD at 0.71028 sl: 0.71148 tp: 0.71898 ok
2021.12.23 21:07:51.634 2021.12.21 12:12:06 111 AUDUSD,M15: 買い注文修正成功!
2021.12.23 21:07:51.634 2021.12.21 21:12:06 111 AUDUSD,M15: modify #2 buy 0.02 AUDUSD at 0.71028 sl: 0.71128 tp: 0.71878 ok
2021.12.23 21:07:51.634 2021.12.21 21:12:05 111 AUDUSD,M15: Buy Order Modification successful!
2021.12.23 21:07:51.634 2021.12.21 21:12:05 111 AUDUSD,M15: modify #2 buy 0.02 AUDUSD at 0.71028 sl: 0.71108 tp: 0.71858 ok
2021.12.23 21:07:51.634 2021.12.21 21:12:00 111 AUDUSD,M15: Modify Buy Order Successful!
2021.12.23 21:07:51.634 2021.12.21 21:12:00 111 AUDUSD,M15: modify #2 buy 0.02 AUDUSD at 0.71028 sl:0.71088 tp:0.71838 ok
2021.12.23 21:07:51.634 2021.12.21 12:11:53 111 AUDUSD,M15: Buy Order Modification successful!
2021.12.23 21:07:51.634 2021.12.21 12:11:53 111 AUDUSD,M15: modify #2 buy 0.02 AUDUSD at 0.71028 sl:0.71068 tp:0.71818
2021.12.23 21:07:51.634 2021.12.21 12:11:52 111 AUDUSD,M15: Modify Buy Order Successful!
知っています。
と書きました。
ストップとテイクは無限に 瞬時に移動する
修正される注文のSLを取得し、計算されたSLと比較する必要があります。もし両者が等しければ、ロボットは計算されたSLが処理中の注文のSLを超えるまで何もしないはずです。2 つの double 値を比較する方法: (それぞれの値の) NodmalizeDouble(value, Digits) を比較するか、EqualDoubleshttps://www.mql5.com/ru/docs/basis/types/double。
知っています。
正しく設定されていますね。 TrailingOrders()関数の 内部で何かを変更しました か?
修正される注文のSLを取得して、計算されたSLと比較する必要があります ...
一般的には、以下のようなルールがあります。
正しく設定されていますね。 TrailingOrders()関数 内で何かを変更したのでしょうか?
変えて「そのまま」置いても結果は同じでした。
変更して「そのまま」置いても結果は同じです。
ログによると、トロールは正しく動作しているので、入力パラメータを確認する必要があります。
2021.12.24 16:10:14.788 2021.12.17 00:00:00 111 - copy: Lot=0.01; StopLoss=200; TakeProfit=560; Slippage=3; Magic=1; K_Martin1=0.01; K_Martin2=1.9; K_Martin3=1.4; OrdersClose=3; OrdersClose2=5; DigitsLot=2; PeriodMA=21; MovingShift=1.のようになります。
2021.12.24 16:10:14.788 2021.12.17 00:00:00 111 - copy: Lot=0.01; StopLoss=200; TakeProfit=560; Slippage=3; Magic=1; K_Martin1=0.01; K_Martin2=1.9; K_Martin3=1.4; OrdersClose=3; OrdersClose2=5; DigitsLot=2; PeriodMA=21; MovingShift=1.のように、このセクションでは、Multi-Movable TypeとMovable Typeを選択することができます。
もしかして、コードの中の関数を間違えて入れてしまった?
で、機能そのものを別に置く
は、コードの中に関数を間違って入れてしまったのでしょうか?
で、機能そのものを別に置く
軌跡は正しい。
このように試してみてください。
台車は正しく立っています。
これを試してみてください。
宇宙へ飛び出す
ストップ安
これは私の理解するところでは、問題ではありません。
間違っていたら訂正してください: void OnTick()
未決済の注文がなく、かつシグナルがある場合、vOrderOpenBuy() / vOrderOpenSell()となります。
次にvOrderModify(int iOTi)が来る。つまり、ストップとタキオを設定し、エラーをチェックするのである。
つまり、ストップやテイクで注文が終了するまでは、トレーリングの観点から修正することはできないのです。
ストップ&テイクの複数が1つ(最大2つ)必要です。
トレーリングストップを変更して利食いしたい場合は、別の方法が必要になります。
どのように実装するかは、まだ考えているところです。