Price = NormalizeDouble(Bid, Digits); // округляем до нужного нам числа цифр после запятойif(StopLoss > 0)
if(Bid < iHigh(Symbol(),0,1))
{
StopLoss = iHigh(Symbol(),0,1)+30*Point;
SL= Price + StopLoss*Point;
SL = NormalizeDouble(SL, Digits); // округляем до нужного нам числа цифр после запятой
}
//+-------------------------------------------------------------------------------------+//| Получаем состояние последней позиции (Открыта или закрыта) |//+-------------------------------------------------------------------------------------+datetime GetLastOrderState()
{
datetime lastOrderCloseTime = -1, // Время закрытия последнего открытого ордера
lastOOTMarket = -1, // Время открытия последнего открытого ордера рыночного
lastOOTHist = -1; // Время открытия последнего открытого ордера из историиfor (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue;
if (OrderMagicNumber() != i_magic) continue;
if (OrderSymbol() != Symbol()) continue;
if (OrderType() > 1) continue; // Все удалённые отложки нас не интересуют..if (lastOrderCloseTime < OrderCloseTime()) // Находим время закрытия..
lastOrderCloseTime = OrderCloseTime(); // ..последней закрытой позиции в историиif (MathAbs(OrderTakeProfit() - OrderOpenPrice()) < i_tp * pt) return(0);
lastOOTHist = OrderOpenTime(); // Тогда время открытия последней закрытой позиции из истории
}
Comment("Время открытия последнего открытого ордера = ", lastOOTHist);
for (int h=OrdersTotal()-1; i>=0; i--)
{
if (!OrderSelect(h, SELECT_BY_POS, MODE_TRADES)) continue;
if (OrderMagicNumber() != i_magic) continue;
if (OrderSymbol() != Symbol()) continue;
{
if (lastOOTMarket < OrderOpenTime())
lastOOTMarket = OrderOpenTime();
if (lastOOTMarket < lastOOTHist) // Если время открытия последнего открытого ордера (рыночного) ниже последнего открытого ордера из истории..
lastOrderCloseTime = OrderCloseTime(); // Значит это искомый ордер
}
}
Comment("Время закрытия последнего открытого ордера = ", lastOrderCloseTime);
return (lastOrderCloseTime);
}
ロジャー、理解できないよ!?
チャート上に水平線を引き、その価格を固定し、線を削除する - それはもはや必要ではありません。すぐにその値段で注文をセットした。
何が間違いなのか?また、なぜSell Stopが開かないのでしょうか?
水平線の価格値だけが必要なのに、なぜ価格を追い続けるのですか?
説明しろ!!!助けてもっと詳しくお願いします
Sellstopは間違っていた、開きます。
さて、セリフについてです。ライブで取引するときは、チャートを見て水平線を 置き、条件が合えば、線を消して注文を出す。単純なホットキースクリプトより優れている点は?テスターで、線を引くには、可視化を有効にして、チャートを観察する必要があります。なぜテスターに追加しなければならないのかも理解できない。
ごめんなさい!そして、おまるで寝てしまいましょう良い朝をお迎えください。;)
指には?時間と値段でテイクオフがわかるのか?確かに自分で考えてもいいのですが、今は朝の7時43分で、まだ寝ていないんです。
もし7時43分になっても寝なかったら...。ということで、grailと させていただきます!
優秀な人たちよ、何が問題なのか教えてくれ。0バーの最初のティックで開く売り取引では、損切りは最初のローソクの高値から30ピップ(5桁)上に設定する必要があります。そう書いたが、ストップロスが全く置かれていない。
これは、例えば、1.5000+30*0.00001 = 1.5003のように、希望するストップロスのレベルです。
SL= Price + StopLoss*Point;
他になぜPriceに StopLoss*Pointを 加えるのか(1.5003*0.00001=0.000015)。SLがPriceとほぼ等しくなるため、StopLossが設定されない。1.最後に閉じた位置(MODE_HISTORY)を探します。
2.テイクアウトで閉店した場合(または閉店に近い場合)→開店時間を覚えておく→。
3.すべてのオープンポジション(MODE_TRADES)を見て、オープン時間を記憶しているものと比較する --> マークが閉じたポジションのオープン時間(ポイント2)が他のオープンポジションのオープン時間から最も長い場合、最後のオープンポジションがマークによって閉じられたことを意味します --> マークが閉じたポジションのオープン時間(ポイント3)を記憶する。
4.残りはすべてトリミング/削除。
ふむふむ、書いてあるようですね。しかし、その結果は同じではありません。
私の場合は、こんな感じで出てきました。
良い人、何が悪いか教えてください。0バーの最初のティックで開く売り取引では、損切りは最初のローソクの高値から30ピップ(5桁)上に設定する必要があります。このように書きましたが、ストップロスは全く配置されていません。
ここにあるのは、まったく何もない。まず、ショートのクローズはBIDではなく、常にASCで行われるという事実から始めましょう。
ストップロスはまだ設定されていませんが、テイクプロフィットは機能しています。ストップロス、テイクプロフィットコードを添付
ふむ。書かれているようです。でも、出力がおかしい...。
これが、私が手に入れたものです。