EAコード2の問題(SLマネージャー) - ページ 4

 
diostar:

しかし、先見の明に感謝します!これは、いくつかの援助を提供する可能性があります、私は願っています。

当初、私のシンボルは4桁、すべてのトレーリングストップ、ストップ/リミット注文の修正、予想通り行きました。 その後、私のブローカーは、小数にすることを決定しました。私は必要な変更を行い、私のピップが-3.4, -4.5, 0.1, 4.6, 7.3, etc.のようになったのを確認しました。 これは大丈夫だと思ったのですが、実はそうではありません。例えば、limit=7に設定し、新しいtick 1,tick 2,tick 3が順次発生したとします。

1) 7.3>limit の後、注文が修正され...ブローカーは1スリッページを埋め...

2) 7.5>limit, 次に注文が修正される...ブローカーはスリッページを0にする...。

3) 7.1>limit, then order is modified....broker fills 2 slippage off...

というわけで、3つのティックについて3回注文が修正さ れることになる。このことに気づいたので、MathRound()を使って最も近い整数に丸めることにした。

1) mathround(7.3) =7 >限界、NOT TRUE、修正されない

2) mathround(7.5)=8 >limit, TRUE, 順序は変更される。

3) mathround(7.1)=7>limit, NOT TRUE, 修正なし

実は、私はまだ上記を改善する方法に取り組んでいます...今のところ、彼らは大丈夫ですが、私は私のものより、より良い方法があるはずだと思います。


素晴らしいDiostar、それは私にとって実際に非常に非常に有用な情報です、特に私が強調したそのビット。

だから私は私の問題を修正した場合、私が望むことができる最高のものです。

ギャップ 00、01、02 などで条件が満たされるたびに、それぞれのヘイを 1、2、3 (それぞれ) スクロールするのが精一杯です。つまり、gap 03で02,01,00、01,00,02、00,02,01と、すべての注文が変更されるまで変更されるのでしょうか? 私はそれらを前方にスクロールする場合は、同じことが、異なる順序など...

でも、後であなたと同じことを発見して、それを強化したいと思うかもしれませんが、私は一度に1つの橋に取り組むことに満足しています...。先見の明に感謝します。

まだそのforumulaを試してみるところです...

 
この式もうまくいきました。Diostarのサポートに感謝します。私はコードを学ぶためにずっと尻尾を追いかけていました。
 

いつものように、後知恵で別の解決策を考える方法ですが......。

ただ、私の学習のために、以下のブロックは、前に私の問題に対する代替回避策として働いていたでしょうか?


//---------------------------old attempt where it spammed modifies--------------------------------------
//---------------------------I got around this problem another way before-------------------------------
void ModifySellBlock()
{
    for (int i=OrdersTotal()-1; i >= 0; i--)
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
    {
        if (OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == SELL_Magic01)
        { 
            double Level_00_SL = Bid + Stoploss_Level_00*PipValue*Point;
            if (Stoploss_Level_00 == 0) Level_00_SL = 0;
            double Level_00_TP = Bid - Takeprofit_Level_00*PipValue*Point;
            if (Takeprofit_Level_00 == 0) Level_00_TP = 0;
            bool ret00 = OrderModify(OrderTicket(), OrderOpenPrice(), Level_00_SL, Level_00_TP, 0, Modify_Order_Colour);
            if (ret00 == false)
            Print("OrderModify() error - ", ErrorDescription(GetLastError()));
        }
    }
    
}

//-----------------------------however I am wondering now that I have fixed it------------------
//------------------------------would this of worked below?-------------------------------------

void ModifySellBlock()
{
    int orderstotal = OrdersTotal();
    int orders = 0;
    int ordticket[30][2];
    for (int i = 0; i < orderstotal; i++)
    {
        OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
        if (OrderType() != OP_SELL || OrderSymbol() != Symbol() || OrderMagicNumber() != 1)
        {
            continue;
        }
        ordticket[orders][0] = OrderOpenTime();
        ordticket[orders][1] = OrderTicket();
        orders++;
    }
    if (orders > 1)
    {
        ArrayResize(ordticket,orders);
        ArraySort(ordticket);
    }
    for (i = 0; i < orders; i++)
    {
        if (OrderSelect(ordticket[i][1], SELECT_BY_TICKET) == true)
        {
            double Level_00_SL = Bid + Stoploss_Level_00*PipValue*Point;
            if (Stoploss_Level_00 == 0) Level_00_SL = 0;
            double Level_00_TP = Bid - Takeprofit_Level_00*PipValue*Point;
            if (Takeprofit_Level_00 == 0) Level_00_TP = 0;
            bool ret00 = OrderModify(OrderTicket(), OrderOpenPrice(), Level_00_SL, Level_00_TP, 0, Modify_Order_Colour);
            if (ret00 == false)
            Print("OrderModify() error - ", ErrorDescription(GetLastError()));
        }
    }
    
}

//--------------------------any problems with this block?----------------------------------------------
 
 
//-----------------------------however I am wondering now that I have fixed it------------------
//------------------------------would this of worked below?-------------------------------------

void ModifySellBlock()
{
    int orderstotal = OrdersTotal();
    int orders = 0;
    int ordticket[30][2];<-----then, arrayinitialize
    
    for (int i = 0; i < orderstotal; i++)
    {
        OrderSelect(i, SELECT_BY_POS, MODE_TRADES);<-----if(orderselect...

        if (OrderType() != OP_SELL || OrderSymbol() != Symbol() || OrderMagicNumber() != 1)
        {
            continue;
        }
        ordticket[orders][0] = OrderOpenTime();
        ordticket[orders][1] = OrderTicket();
        orders++;
    }
    if (orders > 1)<----orders >0
    {
        ArrayResize(ordticket,orders);
        ArraySort(ordticket);
    }
    for (i = 0; i < orders; i++)
    {
        if (OrderSelect(ordticket[i][1], SELECT_BY_TICKET) == true)<---if (OrderSelect(ordticket[i][1], SELECT_BY_TICKET)

        {
            double Level_00_SL = Bid + Stoploss_Level_00*PipValue*Point;
            if (Stoploss_Level_00 == 0) Level_00_SL = 0;
            double Level_00_TP = Bid - Takeprofit_Level_00*PipValue*Point;
            if (Takeprofit_Level_00 == 0) Level_00_TP = 0;      
         
            can consider if(SL>0 || TP>0){
          
            bool ret00 = OrderModify(OrderTicket(), OrderOpenPrice(), Level_00_SL, Level_00_TP, 0, Modify_Order_Colour);
            if (ret00 == false)
            Print("OrderModify() error - ", ErrorDescription(GetLastError()));
        }
    }
    
}
 
diostar:


ディオスターにはお世話になりました。 当時は、このアイデアを思いつくだけの知識すらありませんでした。 今でもARRAYの作り方は勉強中なので、いくつかのコードから作り直したのですが...。

もしデータフローがEVERYTICKに送られるなら、全ての注文を選択して、一度だけ変更するコードのセクションを作るのがどれだけ大変だったか、正直言って信じられません...。

あなたの追加に時間を割いていただき、ありがとうございます。また、Diostar、私はあなたが前に言ったことに気づいていると信じています、私はそれが私のコードではなかったことを知っているので、先見の明に感謝します.... 私は、修正(*私が行っている#順序)を介してスクロールを参照してください、私はそれに来るスリッページに気づく... 私はそれを回避する場合は、あなたに通知されます、おそらく正直に言うと、開始として上記のコードで、再び感謝します;)

 
Funky:


ディオスターにはお世話になりました。 当時は、このアイデアを思いつくだけの知識すらありませんでした。 今でもARRAYの作り方は勉強中なので、いくつかのコードから作り直したのですが...。

もしデータフローがEVERYTICKに送られるなら、全ての注文を選択して、一度だけ変更するコードのセクションを作るのがどれだけ大変だったか、正直言って信じられません...。

あなたの追加に時間を割いていただき、ありがとうございます。また、Diostar、私はあなたが前に言ったことに気づいていると信じています、私はそれが私のコードではなかったことを知っているので、先見の明に感謝します.... 私は、修正(*私が行っている#順序)を介してスクロールを参照してください、私はそれに来るスリッページに気づく... 私はそれを回避する場合は、あなたに通知されます、おそらく正直に言うと、開始として上記のコードで、再び感謝します;)

どういたしまして。 スリッページは、スプレッドと同じように、どのような修正価格、sl、tpでも結果をオフクオートします。しかし、私はいつもスリッページゼロでordersend()しています、まだ。1,2ポイントあっても良いかもしれませんが、今のところ、良い感じです。