[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 57

 
Karabas >> :

こんにちは、インジケーターの色を変えることが可能かどうか教えてください。メインウィンドウに期間の異なる2本の移動平均 線が色の違いで表示されているとします。>> ありがとうございました


MA (Moving Average)の一つを右クリックするとウィンドウが表示されるので、"properties of Moving Average "をクリックすると、色を変更する場所が表示されます。

 
xruss >> :

Cls_BとCls_Sはポジションを閉じることができ、Opn_B Opn_Sと矛盾することはできません。ここで、買いまたは売り注文が開かれたバーとそれが閉じられるべきバーをマークする時系列をコードに書く必要があり、この期間にこれ以上のポジションが開かれないようにします((

すでに持っている開封条件を置き換えるのではなく、そこに新しい条件を加えるということです。私の理解では、同じシグナルでクローズするシグナルがない場合、EAがオープンのシグナルでポジションを持つことを禁止したいのでしょう。だから、追加してください。

if (Opn_B==true && Cls_B==false) { не открывать Buy }
if (Opn_C==true && Cls_C==false) { не открывать Sell }

そして、あなたの方法で行う場合 - どのようにポジションがいつかそこに閉じるべきであるバーを計算するのですか?:)

 

こんにちは

//+------------------------------------------------------------------+
int start()
  {
//----
 double Macd_0=iMACD(NULL,0, MAFastPeriod, MASlowPeriod, MASignalPeriod,1,0,0);
 double Macd_1=iMACD(NULL,0, MAFastPeriod, MASlowPeriod, MASignalPeriod,1,0,1);
 double signal_0=iMACD(NULL,0, MAFastPeriod, MASlowPeriod, MASignalPeriod,1,1,0);
 double signal_1=iMACD(NULL,0, MAFastPeriod, MASlowPeriod, MASignalPeriod,1,1,1);
    
    if(( Macd_0 < Macd_1 && Macd_1 > 0) && ( signal_0 < signal_1 && signal_1 > 0))
     if( CheckOrders(OP_SELL))
      {
       if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, NULL, MagicNumber))
         Print("Не открыт ордер Buy. Ошибка №", GetLastError()); 
       }
       
    if(( Macd_0 > Macd_1 && Macd_1 < 0) && ( signal_0 > signal_1 && signal_1 < 0))
     if( CheckOrders(OP_BUY))
      {
       if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, NULL, MagicNumber))
         Print("Не открыт ордер Sell. Ошибка №", GetLastError()); 
       }

//----
   return(0);
  }
//+------------------------------------------------------------------+

これが第一の選択肢です。

//+------------------------------------------------------------------+
int start()
  {
//----
 double Macd_0=iMACD(NULL,0, pFast, pSlow, pSignal,1,0,0);
 double Macd_1=iMACD(NULL,0, pFast, pSlow, pSignal,1,0,1);
 double signal_0=iMACD(NULL,0, pFast, pSlow, pSignal,1,1,0);
 double signal_1=iMACD(NULL,0, pFast, pSlow, pSignal,1,1,1);
    
    if(( Macd_0 < Macd_1 && Macd_1 > 0) && ( signal_0 < Macd_0 && signal_1 < Macd_1 && signal_1 > 0))
     if( CheckOrders(OP_SELL)) //продажа
      {
       if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, NULL, MagicNumber))
         Print("Не открыт ордер Buy. Ошибка №", GetLastError()); 
       }
       
    if(( Macd_0 > Macd_1 && Macd_1 < 0) && ( signal_0 > Macd_0&& signal_1 > Macd_1&& signal_1 < 0))
     if( CheckOrders(OP_BUY)) //покупка
      {
       if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, NULL, MagicNumber))
         Print("Не открыт ордер Sell. Ошибка №", GetLastError()); 
       }

//----
   return(0);
  }
//+------------------------------------------------------------------+

これは2つ目のバリエーションです。

Macdをベースに したExpert Advisor、取引はシンプル(全て0と1バーをベースに、価格はオープン)です。

最初のケースでは、macdの値は増加し(買いの場合)、売りの場合は減少します。信号線もこの条件に基づいています。

2つ目のケースでは、macdの速い線と遅い線の交差を実現しようとしました。しかし、それが正しいのかどうか......いくつかの疑問が残りました......。

 
Everlost >> :

すでに持っている開封条件を置き換えるのではなく、そこに新しい条件を加えるということです。私の理解では、同じシグナルでクローズするシグナルがない場合、EAがオープンのシグナルでポジションを持つことを禁止したいのでしょう。だから、追加してください。

if (Opn_B==true && Cls_B==false) { не открывать Buy }
if (Opn_C==true && Cls_C==false) { не открывать Sell }

そして、あなたの方法で行う場合 - ある時点でポジションを閉じるべきバーをどのように計算するのですか?:)

ポジションを開くにはどうしたらいいですか?)

なぜなら、Opn_B=true Cls_B=falseのときに開くので、その瞬間にCls_Bがtrueになることはありえないからです。


例えば、MA`が価格提示を横切り(Opn_Sを形成)、下向きにポジションを建て、SL-がBreakevenに移動したとします。そしてここで価格がSLをBreakevenまで滑らせて...



 
xruss >> :

が、私のポジションはどのように開くのでしょうか:)

なぜなら、Opn_B=true Cls_B=falseのときに開くので、その瞬間にCls_Bがtrueになることはありえないからです。

よし、もう一つ変数を作ろう、例えばint Last_Position=-1だ。ポジションがオープンしたら、すぐに注文の種類を入力します。そして条件を追加する。

if (Opn_B==true && Last_Position==OP_BUY) { сигнал Buy пропускаем }

 
Everlost >> :

OK、別の変数、例えばint Last_Position=-1を作成します。ポジションがオープンしたら、すぐに注文の種類を入力します。そして条件を追加する。

if (Opn_B==true && Last_Position==OP_BUY) { сигнал Buy пропускаем }

だいたいそんな感じでやったのですが、ちょっと残念な結果になりました(

トレンドが緩んで横ばいになり(修正され)、また新しい強さで動き続け、このようにブロックされる正しいOpn_Sシグナルを出すことがあります。 Opn_SシグナルからCls_Sまで、Opn_BからCls_Bまでの領域で1オーダーで取引を制限するには、どうしたらよいでしょうか。

 
xruss >> :

そのようにしたのですが、満足のいく結果ではありません((

トレンドが弱まり、横ばいになり(修正)、その後新しい強さで動き続け、正しいシグナルOpn_Sを出し、それがブロックされることもあります。 シグナルOpn_SからCls_S、Opn_BからCls_Bまでの領域で、1つの注文で取引を制限するにはどうすればいいですか。

Cls_SまたはCls_Bの信号を受信したら、最後に開いた位置を忘れる(Last_Position変数の値を-1に戻す)だけです。

if ((Cls_S==true || Cls_B==true) && Last_Position>=0) Last_Position=-1;

 
Expert Advisorに条件を追加して、前のトレードが負けたことを知る方法を教えてください。
 
Dimoncheg >> :
EAで、前のトレードが損切りだったことを知るために、条件をどう綴るか教えてください。

if (OrderProfit() < 0) {...

...

}

 
専門家の皆様、私の質問を無視しないでください。

ボラティリティを日足などで カウントするような指標はないのでしょうか。しかし、0.34のような不定な数字を出すものはダメだ。しかし、1日あたりのローソク足の数を計算し、それを与えられた期間(日数)で割ることで、インジケータが平均値を知ることができるようにする必要があります。例:始値100、終値200、2日目-始値200、終値250。この2日間の平均ボラティリティ=((200-100)+(250-200))/2日=(100+50)/2=75
ダウンロードできる場合は、ダウンロード先。