マーケットで公開されているEAにおける最小ストップの確認。 - ページ 3

 
Ihor Herasko:

申し訳ありませんが、コードのどこでStopLevel変数の値について議論されていますか?引用されたコードでは、この変数の値に変化はありません。StopとProfitの値に変化がある。そのため、一度増やすと初期値には戻せなくなる。このように、ストップ・レベルはとっくの昔に下がっているのに、大きなストップと利益を追い求めることになるのです。

私は多くの証券会社(数十社、数百社)の情報を持っているわけではありません。私が取引しているブローカー(顧客が口座を持っているため)では、スプレッドが2という数字が見えます。もしかしたら、どこかに違う価値観があるのかもしれません。

これは、ブローカーの情報提供のあり方として、根本的に間違っていると私は思います。ストパンの制限を受けるための標準的な仕組みがあります。リクエストで0を受け取ったとしても、実際には0ではない場合。そして、スプレッド値に応じて、1ティックごとに必要な分だけ変更します。Stop Levelを正しく表示する私のブローカーは、唯一のブローカーである。

OnInitLevelsという関数名から結論を出しました。1つのアクションに関連付けられます。

確かに機能は似て非なるものですが、感覚は同じです。

内部変数を変更しても、外部変数はそのままで、ストップが大きくなったり小さくなったりすると、すべての内部変数が再配置され、すべてがOKになります。

しかし、min stop = assign spread *2 MetakvotesDemoサーバーの言うことを試してみることにします。

 
Vitalii Ananev:

こんなことをしました

Expert Advisorは、3つの方法でストップを調整する機能を備えています。ストップサイズ(StopLoss)を手動で設定するか、ゼロに設定します。

StopLossがゼロに等しい場合、そのサイズは市場の状況に基づいて 計算されますが、StopLimit変数によって制限されます。

そしてOnInit()では、これらのパラメータが正しいかどうかチェックされます。なぜなら、10ポイントより下にストップを置くのは意味がないからです。

はい、しかし、MetacvotesDemo Serverのように、stop = 8の場合はどうでしょうか?
 

こんなことをしました。

int OnInitLevels(string symToWorkmodify)
  {
   int stoplevel;
   stoplevel=SymbolInfoInteger(symToWorkmodify,SYMBOL_TRADE_STOPS_LEVEL);
   double ask=SymbolInfoDouble(symToWorkmodify,SYMBOL_ASK);
   double bid=SymbolInfoDouble(symToWorkmodify,SYMBOL_BID);
   double point=SymbolInfoDouble(symToWorkmodify,SYMBOL_POINT);
   int SPREAD=(ask-bid)/point;
   if(stoplevel==0)stoplevel=SPREAD*2;
   if(lot<SymbolInfoDouble(symToWorkmodify,SYMBOL_VOLUME_MIN))lots=SymbolInfoDouble(symToWorkmodify,SYMBOL_VOLUME_MIN);else
   if(lot>SymbolInfoDouble(symToWorkmodify,SYMBOL_VOLUME_MAX))lots=SymbolInfoDouble(symToWorkmodify,SYMBOL_VOLUME_MAX);else lots=lot;
   if(StopLoss>0 && StopLoss<stoplevel)StopLosss=(int)stoplevel;else StopLosss=StopLoss;
   if(TakeProfit>0 && TakeProfit<stoplevel)TakeProfits=(int)stoplevel;else TakeProfits=TakeProfit;
   if(TrailingStop>0 && TrailingStop<stoplevel)TrallingStops=(int)stoplevel;else TrallingStops=TrailingStop;
   if(TakeProfitALL>0 && TakeProfitALL<stoplevel)TakeProfitsAver=(int)stoplevel;else TakeProfitsAver=(int)TakeProfitALL;
   if(TrailingStop>0 && TrailingStop<stoplevel)TrallingStops=(int)stoplevel;else TrallingStops=TrailingStop;

   return(0);
  }

司会者の話を聞いてからにします。

 
Vitalii Ananev:

こんなことをしました

Expert Advisorは、3つの方法でストップを調整する機能を備えています。ストップサイズ(StopLoss)を手動で設定するか、ゼロに設定します。

StopLossがゼロに等しい場合、そのサイズは市場の状況に基づいて 計算されますが、StopLimit変数によって制限されます。

そしてOnInit()では、これらのパラメータが正しいかどうかチェックされます。なぜなら、10ポイントより下にストップを置くのは意味がないからです。

あなたはこれを示唆するべきではありません、あなたのチェックは、口座の取引条件に関する言及を含んでいない、数字は天井から来るものです
 
Alexander Bereznyak:
あなたはこれを示唆することはできません、あなたのチェックは、口座の取引条件への参照がありません、数字は天井からです
エキスパートアドバイザーの全コードをここで書くつもりはありません。私のやり方に賛成するか反対するかはあなた次第で、私はそれを強制するつもりはありません。
 
Vladislav Andruschenko:
はい、しかし、stop = 8の場合、例えばMetakwotsDemoサーバーのように?
ストップロス=8ということでしょうか?この例では、最小のストップロスを 取引条件に基づいて設定したわけではありません。しかし、便宜上とEAに実装されている取引戦略に基づいています。
 
Vitalii Ananev:
ストップレベル=8ということでしょうか?この例では、最小の損切り サイズを取引条件に基づいて設定したわけではありません。しかし、便宜上とEAに実装されている取引戦略の都合上。

うん、わかるよ、戦略とかね。

戦略などの問題ではありません。

EAをマーケットに出すと、ストラテジーを切ってチェックするので、ストラテジーのように100ポイントではなく、1ポイントのストップを入れてくるのです

130のエラーであることが判明し、それについて質問しました :-)

 
Vitalii Ananev:
ストップレベル=8ということでしょうか?この例では、最小のストップロスを 取引条件に基づいて設定したわけではありません。便宜上、EAに実装されている取引戦略に基づくものです。
その合理性は、不用意に口座内の取引条件と矛盾することがある
 
Vladislav Andruschenko:

うん、わかるよ、戦略とかね。

戦略などの問題ではありません。

EAをマーケットに出すと、ストラテジーを切ってチェックするので、ストラテジーのように100ポイントではなく、1ポイントのストップを入れてくるのです

130のエラーであることが判明し、それについて質問しました :-)

もし、ストップレベルが変動するのであれば、Alexanderが提案したようにスプレッドに関連付けるか、ストップロス・ サイズを設定できないような境界条件を設定する必要がありますね。
 
Vitalii Ananev:
それこそ、ストップレベルが浮いているのであれば、アレキサンダーの言うようにスプレッドに紐付けるか、それ以下ではストップロスの 大きさを設定できないような境界条件を設定するかです。

スプレッド*2を確認したのですが......どうなんでしょう。