トレーリングファンド機能(株式)-既製品に出会った方はいらっしゃいますか? - ページ 4

 

私の提案

//+------------------------------------------------------------------+
//|Трал по эквити                                                    |
//+------------------------------------------------------------------+
bool EcvitiTral3(double EqvTralStep){
if(OrdersTotal()<1){ gEqviti=AccountBalance();return(false);}
if(!GlobalVariableCheck("step")){ EqvTralStep= EqvTralStep;}
  else{ EqvTralStep=GlobalVariableGet("step");}
EqvTralStep= EqvTralStep*(GlobalVariableGet("multi")-GlobalVariableGet("disable"));
  if( WithoutLoss){
    if(AccountEquity()>=AccountBalance()){
      if(AccountEquity()-AccountBalance()>((AccountBalance()/100)*( EqvTralStep*2))){ EqvTralStep= EqvTralStep*2;}
      if(AccountEquity()>( gEqviti+( gEqviti/100* EqvTralStep))){
        gEqviti= gEqviti+( gEqviti/200* EqvTralStep);
        eqvtrade=true;
        if(!GlobalVariableCheck("stop")){GlobalVariableSet("stop",0);}
      }
      if(AccountEquity()<= gEqviti){ CloseAll();Print("CloseAll");GlobalVariableDel("stop");return(false);}
      else{Comment(AccountFreeMargin()+AccountMargin(),"\n",
                 "EQUITY TRALING MODE\n",
                 "EQUITY TRALING STEP   =", EqvTralStep," %",
                 "\n ACCOUNT BALANS         = ",AccountBalance(),
                 "\n CLOSE LEVEL                  = ", gEqviti,
                 "\n ACCOUNT EQUITY        = ",AccountEquity(),
                 "\n NEXT STEP                     = ", gEqviti+( gEqviti/100* EqvTralStep));
                 return(true);
      }
    }else{GlobalVariableDel("stop");} 
  }else{
    if(AccountEquity()>AccountBalance()){
      if(AccountEquity()-AccountBalance()>((AccountBalance()/100)*( EqvTralStep*2))){ EqvTralStep= EqvTralStep*2;}      
      if(AccountEquity()>( gEqviti+( gEqviti/100* EqvTralStep))){
        gEqviti= gEqviti+( gEqviti/200* EqvTralStep);
        eqvtrade=true;
        if(!GlobalVariableCheck("stop")){GlobalVariableSet("stop",0);}
      }
      if(AccountEquity()<= gEqviti){ CloseAll();Print("CloseAll");GlobalVariableDel("stop");return(false);}
      else{Comment(AccountFreeMargin()+AccountMargin(),"\n",
                 "EQUITY TRALING MODE\n",
                 "EQUITY TRALING STEP   =", EqvTralStep," %",
                 "\n ACCOUNT BALANS         = ",AccountBalance(),
                 "\n CLOSE LEVEL                  = ", gEqviti,
                 "\n ACCOUNT EQUITY        = ",AccountEquity(),
                 "\n NEXT STEP                     = ", gEqviti+( gEqviti/100* EqvTralStep));
                 return(true);
      }
    }else{GlobalVariableDel("stop");}  
  }
return(false);
}
コールは最初に置かれ、トロール時間のためにEAブロックの残りの部分をオーバーラップし、トレーリングステップは可変です - 最大利益をキャプチャ株式ジャンプでうまく動作することができます二次。 CUモードは、芽で不採算の注文をカットすることができます。
 
xrust >>:

私の提案

トレーリングステップは可変で、エクイティジャンプを回避して最大限の利益を得ることができます。 CUEモードは、利益の出ない注文の芽を摘み取ることができます。

xrust さん、こんにちは。本機の操作について、もう少し詳しく説明してください。うまく動作させることができない

うまく動作させることができない

1.CloseAll()関数は、すべての注文を削除し、ポジションをクローズ するf関数である必要があります。

この機能のアナログがあるのですが、こちらは問題ないです。

2.プロパティで定義しています。

extern bool WithoutLoss = true;

- このパラメータは何ですか?

3.

extern double gEqviti=200;// - これは、トロールが動作し始める資本に達するサイズですか?

4.も設定しました。

bool eqvtrade。

他に設定する必要があるものは?パラメータEqvTralStep;はどのように設定するのですか?

そして、(難しくなければ)その機能がどのように働くのか、一般的な形で2-3語で説明してください。

 
この関数は、int Start()の直後、EAの一番最初に呼び出されます。
//удаляем запрет на торговлю после удаления всех ордеров 
  if(OrdersTotal()<1){
    if(GlobalVariableCheck("stop")){GlobalVariableDel("stop");}  
    gEqviti=AccountBalance(); 
  } 
//тралим эквити
  if( EcvitiTral3( EqwTralStep)){return(0);}
  if(GlobalVariableCheck("stop")){return(0);}

eqvitiがバランスを超えて上昇している場合、EAのすべてのスチール機能とトロールをブロックします。

次に変数ですが、グローバル変数に static double gEqviti;

extern double EqwTralStep=0.03; 自己資本に対するトレーリングステップの割合 extern bool WithoutLoss=false; Breakevenメソッドの適用を許可する。

この関数の動作:純資産が残高を上回った場合、残高レベルをゼロとして記録し、それは閉じる必要があることを意味します。純資産がパーセントでEqwTralStepだけ上回った場合、閉じるレベルを上に移動し、上回る速度が速い場合、関数は二次的にステップを増加します。

 
ありがとうございました。試してみます。
 

どういたしまして、何か困ったことがあれば、遠慮なく...。

 

完了しました。稼働しています。今のところ、問題なく使えています。オンラインになって2週間目。

でも。稀に不具合が発生することがあります。

通常、私は同時に3~10個のポジションを持っています。

しかし、-マーケットに1つのポジションがあると、突然、理由もなく、利益=1-2pipsで閉じてしまいます

その理由がわからない。私のExpert Advisorの基本コードでは、そのような事態は想定していません。

 

それは非常に簡単に制御することができ、このような閉鎖は、急激な価格スイングと新しい終値レベルへの移動によって引き起こされ、結果としてポジションを 閉じることができます。

そうしてください。

организуйте в функции стическую переменную static double prewlewel;

потом перед , или за комментами 

  if( prewlewel!= gEqviti){
    prewlewel= gEqviti;
    Print( prewlewel);
  } 

А здесь добавьте обнуление переменной 
if(OrdersTotal()<1){ gEqviti=AccountBalance(); prewlewel=0;return(false);}
 

xrust - 提案があるのですが、あなたのバージョンの株式トロールのコードをスタンドアロンEAとして持ってきていただけませんか?

ハンドトレーダーにはとても便利なツールになると思います。

このようなツールをずっと探していたのですが、適当なものがなく、私自身、コーディングが苦手(というか弱い)なので、このようなツールを探しています。

 
ToKa_TuXa писал(а)>>

xrust - 提案があるのですが、あなたのバージョンの株式トロールのコードをスタンドアロンEAとして持ってきていただけませんか?

ハンドトレーダーにはとても便利なツールになると思います。

グッドアイディア!応援しています...

確かに。このようなデザインは、気づかれないわけがありません。

 
これを試してみて ください 簡単な操作で自分も使っています。欲しい利益と、それに到達した後の許容ドローダウンの割合を指定するだけです。