トレーリングストップとトレーリングプロフィット - ページ 3

 
deVries:


修正ありがとうございます。

もし、count=count-1; を使っているのであれば、私が2つ前の記事でクリアしようとした「for」ループを使う必要はないでしょう。

そして、時にはそれは試してみる価値があります。そして、時には試してみる価値があるものです。ちょうど今、いくつかの間違いを自分で直しましたが、それはとても楽しいものでした。

本当にありがとうございます。Take Profitの 部分は、今のところ期待通りに動いています。

 
Arav007:


修正ありがとうございました。

もし、count=count-1; を使っているのなら、私が2つ前の記事でクリアしようとした「for」ループを使う必要はないでしょう。

そして、時には、それは試してみる価値があります。今、私はいくつかの間違いを自分で直しましたが、それは私に喜びを与えてくれました。

本当にありがとうございます。Take Profitの部分は、今のところ期待通りに動いています。


テストをして、コードを読み、多くのことを学ぶことができます。

あなたが理解し、探求しようとするならば、あなたは多くの学習をすることができます。

理解し、探求しようとすれば

テストと自分のデモ口座での作成で、多くのことを学ぶことができます。

 
deVries:


テストし、あなたが見るコードを読み続けると、あなたは多くを学ぶことができます。

多くのことを学ぶことができます。

を理解し、探求することができます。

テストとあなた自身の 'デモ'テストアカウントでそれを作成することで


はい、私は私が何を理解しようとしている。

さて、「ストップロス・ トレール」の部分についてですが、私はあることを考えました。

Trailing Stop」のループを開始する条件です。

if(OrdersTotal()>0){とします。

for(cnt=OrdersTotal()-1;cnt>=0;cnt--)

{

トレイリングストップ

}

このループは、オープンしたオーダーの数だけ実行されると考えています。そして、私の目的は、最後と3番目の注文のストップ高を「トレールしない」ことです。

そこで、もし「2番目」の注文でループを止めるとしたら、どうなるでしょうか?

for(cnt=OrdersTotal()-1;cnt>0;cnt--)

 
Arav007:


はい..........................理解しようとしています。

さて、「ストップロス・トレール」の部分ですが、ちょっと考えてみました。

Trailing Stop'のループを開始するための条件です。

if(OrdersTotal()>0){とします。

for(cnt=OrdersTotal()-1;cnt>=0;cnt--)

{

トレイリングストップ

}

このループは、オープンしたオーダーの数だけ実行されると考えています。そして、私の目的は、最後と3番目の注文のストップ高を「トレールしない」ことです。

そこで、もし「2番目」の注文でループを止めるとしたら、どうなるでしょうか?

for(cnt=OrdersTotal()-1;cnt>0;cnt--)


正しいシンボルと正しいマジックナンバーを見つける

で、EAのトレードになる。Bid/Askがorderopenprice()からxx pips離れているかチェック する。

ここで検索すれば、使える例が見つかるはずです。

 
deVries:


正しいシンボルと正しいマジックナンバーを見つける

Bid/Askがorderopenprice()からxx pips離れているかどうかをチェックします。

ここで検索すれば、使える例が見つかるはずです。


私はチェックと条件部分を持っています。

 if(OrdersTotal()>0){



        for(cnt=OrdersTotal()-1;cnt>=0;cnt--){

        

        if(!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) continue;

        if(OrderSymbol() == Symbol() && OrderMagicNumber() ==  MagicNumber){

sl     = OrderStopLoss(); // Stop Loss. 

                tStopLoss = NormalizeDouble(OrderStopLoss(), Digits); // Stop Loss. 

                

                if(OrderType()==OP_BUY){

                

                        if(Ask> NormalizeDouble(OrderOpenPrice()+TrailingStart* vPoint,Digits)

                        && tStopLoss < NormalizeDouble(Bid-(TrailingStop+TrailingStep)*vPoint,Digits)){

 tStopLoss = NormalizeDouble(Bid-TrailingStop*vPoint,Digits); 

}

}

しかし、ここでトレードを区別する方法がよくわかりません。Trailing Stop'関数は プログラムの開始時に呼び出されます。

 

*ある一定の利益限度(例えば10ピップス)に達した後、ストップロスは 5ピップスに移動します。もしその取引が5ピップスまで後退したら、その取引の「3分の2」が決済されます。

*残りの「3分の1」は実行され続け、「トレーリングストップ」は適用されません。

あなたは3つのトレードを持っていますが、3つのトレードをどのように処理したいですか?

どのように処理しますか?

あるいは、ある利益を得た後、どれを修正しなければならないか...。

 
deVries:

*ある一定の利益限度(例えば10ピップス)に達した後、ストップロスは5ピップスに移動します。もしその取引が5ピップスまで後退したら、その取引の「3分の2」が決済されます。

*残りの「3分の1」は実行され続け、「トレーリングストップ」は適用されません。

あなたは3つのトレードを持っていますが、3つのトレードをどのように処理したいですか?

どのように処理しますか?

あるいは、ある利益を得た後、どれを修正しなければならないか...。


単純化するために、私は同じロットの別々の取引を3つ行うことにしました。したがって、そのうちの2つが決済されると、全体の取引(ロット)の「3分の2」が決済されます。

残りの3分の1の取引は実行し続け、「トレーリングストップ」は適用されない。

ストップロスは、最初の2つの取引では、ある特定のピップスまで移動しますが、3番目の取引では、移動しません。

 
Arav007:


単純化するために、同じロットで「3つ」の別々の取引をすることにしました。したがって、そのうちの2つが閉じられると、全体の取引(ロット)の「3分の2」が閉じられることになります。

そして残りの取引(3分の1)は実行し続けられ、つまり「トレーリングストップ」はそれに対して適用されません。

ストップロスは、最初の2つの取引では、ある特定のピップ数の利益に移動しますが、3番目の取引では、移動しません。


この改造を正しく行うには、いくつかの関数を使用する必要があります。

このとき、修正するトレードを選択する方法を確認する必要があります。

Trade Functions を見て、トレード1を選択できるかどうか確認してください。

 
deVries:


このような場合、いくつかの関数を使用する必要があります。

この時、修正しなければならない取引を選択する方法を何とかして確認しなければなりません。

トレード機能で、トレード1が選択できるかどうか確認してください。


インデックス番号とチケット番号の比較は可能ですか?

   if (count==3) 

    {

  SellOrder_1=OrderSend(Symbol() , iOrderType_Sell , LotSize,OpenPrice,Slippage ,dStopLossPrice ,dTakeProfitPrice_1 , "Sell Order",MagicNumber , 0,Red);

                

    if (SellOrder_1>0) //Checking if the order was opened or not

      { 

      sLog_CheckBuyConditions = sLog_CheckBuyConditions + sNL + "    Sell order 1 sent successfully. Ticket=" + SellOrder_1;

      Sell_Order_Ticket_1=SellOrder_1;

      count = count - 1; 

      }

     else {

          iLastError = GetLastError();                               

          sLog_CheckBuyConditions = sLog_CheckBuyConditions + sNL + "    Error sending sell order 1. Error code=" + ErrorDescription(iLastError);



} 

} 

//Trailing Stop Function 

if(OrdersTotal()>0){

//

        for(cnt=OrdersTotal()-1;cnt>=0;cnt--){

        

        if(!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) continue;

        if(OrderSymbol() == Symbol() && OrderMagicNumber() ==  MagicNumber){

                sl     = OrderStopLoss(); // Stop Loss. 

                tStopLoss = NormalizeDouble(OrderStopLoss(), Digits); // Stop Loss. 

                

                if(OrderType()==OP_BUY){

if (cnt==Sell_Order_Ticket_1){

Proceed to Next 

} 

上記のColor Blockedの部分を参照してください。

ありがとうございます。

 
Arav007:


インデックス番号はチケット番号と比較できますか?

上記「カラーブロック」部分をご参照ください。

ありがとうございました。


for(cnt=OrdersTotal()-1;cnt>=0;cnt--){

あなたの注文の合計は3トレードです

これを実行します。

//for(cnt=OrdersTotal()-1;cnt>=0;cnt--){

for(cnt= 3 -1;cnt>=0;cnt--)
   {
   Print ("cnt =  ",cnt);
   }

Terminalを開いてExpertsを見るとどうなっているのでしょうか?

Sell_Order_Ticket_1 は cnt と同じ 値になるのでしょうか?

もしそうなら、あなたはそれが...であることを私に証明することができますか?

そうでない場合、なぜそうではないのでしょうか?