[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 125

 
hoz:



そこで、今回のケースにチェックを入れています。

ストップ-ニューストップ(単位:b.u.)がゼロでない場合...そして、修正する。そうでない場合は、モディファイを行いません。だからこそ、どうしてこうなるのかがわからないのです。結局、過去と新規の停止が 等しいかどうかを確認する必要があることは理解し、実行しています。

ここでは、バイをエラーなくトローリングする際の、上下からのチェック方法を紹介します。

          if(OrderStopLoss() > OrderOpenPrice())
          {
            if(NormalizeDouble(Bid-OrderStopLoss()-plus*tral,Digits) > prev)
            if(Bid > NormalizeDouble(OrderStopLoss()+plus*tral+prev,Digits))
            {
              SL = NormalizeDouble(OrderStopLoss()+plus*part*tral,Digits);
              ModifyOrder(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0,Blue);return(0);
          } }

注文や位置の変更に有効なModifyOrder()関数を提供することができます。

 
Vinin:

ハッキングされたように見えないように、このコードを編集してください。
理解できない。
どうやって編集するんだ、どういう意味だ?
 
borilunad:
バー単位ではなく、何pips単位で修正することをお勧めします。必要であれば、そのためのリソースです。そして、すでに存在する修正に対して価格を繰り返すと、「エラーなし」のエラーがポップアップします。だから、最初にアドバイスしたように、一歩一歩進んでいくしかないのです。


B.U.はもちろんpipsで描画されます。B.U.関数を 1ティック毎やバーのオープン時などに呼び出すという 意味ですが...。でも、そんなのバカバカしいじゃないですか。1本あたりの価格が大きく跳ね上がることがあります。ということは、ティックワイズと同じような呼び方になるわけですね。ただ、何か条件を追加して、tick毎に呼び出されないようにする必要があるかな、と思っていました。今のSTOPとこれから設定されるSTOPを比較した方がいいと思うんです、なんとなく...。

一般的にはなんとも不思議なことです。

スタート 時の条件を追加していました。

if (priceBU != OrderStopLoss())
   {
       MovingStopLossToBU();
   }

これでエラーは出なくなりました。

よくわからないのは、MovingStopLossToBU()の 関数自体が、Stop Lossと等しくない場合にのみ変化することです。

if (ND(OrderStopLoss() - priceBU * pt) != 0.0)
    if (!OrderModify(OrderTicket(), OrderOpenPrice(), priceBU, OrderTakeProfit(), 0, CLR_NONE ))
    {
       Print ("Ошибка модификации ордера ", OrderType(), " - ", GetLastError());
    }
では、どのように理解しているのでしょうか。
 
こんばんは、平均MA(10)より上のローソク足を緑、下のローソク足を赤で色分けする方法を教えてください。
 
hoz:


B.U.はもちろんpipsで描画されます。B.U.関数を1ティック毎やバーのオープン時などに呼び出すという意味ですが...。でも、そんなのバカバカしいじゃないですか。1本あたりの価格が大きく跳ね上がることがあります。ということは、ティックワイズと同じような呼び方になるわけですね。今思ったのですが、条件を追加して、tick毎に呼び出されないようにした方がいいのかもしれませんね。今のSTOPとこれから設定されるSTOPを比較した方がいいと思うんです、なんとなく...。

一般的にはなんとも不思議なことです。

開始 条件を追加したら、そのようになりました。

これでエラーは出なくなりました。

よくわからないのは、MovingStopLossToBU()の 関数自体が、Stop Lossと等しくない場合にのみ変化することです。

では、どのように理解しているのでしょうか。

あなたの例では、ストップがゼロのとき、それはストップなしでポジションを 開いただけということです。 そして、すでにブレイクイーブンに達している場合をあげました。

しかし、上記をご覧ください、私は損益分岐なしで私のトロールを与えたのですそして、その機能をお渡しすることができます。

 
agat8430:
理解できない。
どのように編集するのか、どのように理解するのか。
それなら、わからない人は来るところを間違えたんだ。わからないことは勉強する、聞く。そして、何もわからなければ、必要ないのです。
 
borilunad:
上記をご覧ください!私の間違いのないトローリングをお伝えしました。そして、その機能をお渡しすることができます。


書き込んだ時には、お返事を拝見していませんでした。これから見てみます。

でも、一般的には、あなたの改造機能を見て、自分も何か新しいことを学べるかもしれないので、うれしいです。

 
borilunad:

あなたの例では、ストップがゼロのとき、それはストップなしでポジションを開いたところということです。そして、すでに損益分岐点になっている場合のケースをあげました。

上記参照、損益分岐のない私のトロールをあげてみましたそして、その機能をお渡しすることができます。


いや、止まらないで。一部分だけ掲載しました。これが私のブレークイーブン関数です。

//+-------------------------------------------------------------------------------------+
//| Перевод в б.у. рыночных ордеров                                                     |
//+-------------------------------------------------------------------------------------+
void MovingStopLossToBU()
{
    double priceBU;
    int type = OrderType();
    for (int i=OrdersTotal() - 1; i>=0; i--)
    {
        if (!OrderSelect(i,SELECT_BY_POS)) continue;
        if (i_magic != -1) if (OrderMagicNumber() != i_magic) continue;
        if (OrderSymbol() != Symbol()) continue;
        if (OrderType() > 1) continue;
        
        RefreshRates();
        
        if (type == 0)
        {
           double price = Ask;
           int li_cmd = 1;
        }
        else
        {
           price = Bid;
           li_cmd = -1;
        }

           if (li_cmd * (price - OrderOpenPrice()) >= i_triggerForBU * pt)
           {
             priceBU = ND(OrderOpenPrice() + li_cmd * (i_preservedProfit * pt));
             if (ND(OrderStopLoss() - priceBU * pt) != 0.0)
             {

                 if (!OrderModify(OrderTicket(), OrderOpenPrice(), priceBU, OrderTakeProfit(), 0, CLR_NONE ))
                 {
                     Print ("Ошибка модификации ордера ", OrderType(), " - ", GetLastError());
                 }
               
                     Comment ("Ордер успешно переведён в безубыток");
                     Print ("Ордер успешно переведён в безубыток");
             }
           }
    }
}

この行では、計算されたストップがすでにあるストップと同じであれば、何も修正されないことが明確にわかります。そうだろ?では、もともとの小切手は?しかし、修正関数の前のスタートで別の条件を入力するまでは、エラー1が常に出ていました。

if (priceBU != OrderStopLoss())
   {
       MovingStopLossToBU();
   }
だからこそ...。というのを考えているんです。すべて説明し尽くしたつもりです。
 
hoz:
それなら、わからない人は来るところを間違えたんだ。わからないことは勉強する、聞く。そして、何もわからなければ、必要ないのです。


何も理解できないなら、必要ない。 じゃあ、全て理解した上で、ハッキングに見えないようにコードを編集する方法を教えてくれ。初めて掲示板を見たのですが、こんなに素敵な回答があったんですね。

"天才的な人は、天才的な答えを出す"

 
agat8430:


では、どうすればハッキングにならないようにコードを編集できるのか、みなさんが理解できるように教えてください。 初心者のためのブランチに来たんです。フォーラムで初めて来たのですが、ナイスな回答が返ってきました。

"天才的な人には、天才的な答えがある"。

まずは新規参入の方に。

フォーラムナビゲーター、よくある質問に対する回答など。ぜひ読んでみてください。( 1 2 3 4 5 6 ) 51 18.02.2011 よくあるご質問