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

 
こんにちは。
//+------------------------------------------------------------------+
//|                                               Indicator_MACD.mq4 |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+
// Modify Vinin
#property copyright ""
#property link      ""

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red
//---- input parameters
extern int       Fast_EMA=13;
extern int       Slow_EMA=21;
extern double    N = 0.001221;
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double MACD[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   IndicatorBuffers(3);
   SetIndexStyle(0,DRAW_ARROW, EMPTY, 3);
   SetIndexArrow(0,233);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexEmptyValue(0,0.0);
   SetIndexStyle(1,DRAW_ARROW, EMPTY, 3);
   SetIndexArrow(1,234);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexEmptyValue(1,0.0);
   SetIndexBuffer(2,MACD);
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
   int limit = Bars-counted_bars-1;
   
   for(int i = limit; i>= 0; i--) {
      ExtMapBuffer2[i] = EMPTY;
      ExtMapBuffer1[i] = EMPTY;
      MACD[i]=iMACD(NULL,0,Fast_EMA,Slow_EMA,1,1,MODE_MAIN, i);
      if (((MACD[i]-N)*(MACD[i+1]-N)<0) || ((MACD[i]+N)*(MACD[i+1]+N)<0))
      {
       if( MACD[i] <-N) ExtMapBuffer2[i] = High[i]+iATR(Symbol(), 0, 14, i);
       if( MACD[i] > N) ExtMapBuffer1[i] = Low[i] -iATR(Symbol(), 0, 14, i); 
      }
   }
   return(0);
}
//+------------------------------------------------------------------+
以下は、インジケーターのコードです(VINで微調整して変更しました - どうもありがとうございました)。
すべて良し、筋が通っているようだ......。ちょっとだけリメイクを希望。しかし。アイデアは、下部にあるMACDはここに(すべてのその値は値N未満である)成長し始め、矢印を設定しますベイ。
は、SHELの逆です。取引条件を変更しようとした(値を<から>に変更してもうまくいかなかった)。MACDが成長し始めた(マイナスになった)場合、矢印の出現の瞬間は取引条件と一致します。正しいように見える......が、矢印が出過ぎた............。
教えてください!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
Swetten >>:
Есть МАКД с параметрами 9 и 12.

Верно ли, что он показывает разницу между МА с периодами 9 и 12? А то у меня какой-то разбег в цифрах.

MAとMAKDのma_method, applied_priceのコンプライアンスをチェックする。

 
アドバイスお願いします
全てのMACD値は1次元配列MACD[] に格納されており、それらを一括して(10要素ごとに)極大・極小をチェックし、インジケータに描画したいと思います。
以下はそのコードです。
for(i=0; i<limit; i=i+10)
       {
         int k = i;
         for(k=i; k<i+10; k++)
             {       
              x10[k] = MACD[k];  
             }
         int maxValueIdx=ArrayMaximum(x10);
         int minValueIdx=ArrayMinimum(x10);    
         MAX[k] = maxValueIdx;
         MIN[k] = minValueIdx;
       }
なぜ描かれていないのでしょうか?
 
Noterday писал(а)>>
アドバイスお願いします
MACDの値はすべて1次元配列MACD[] に入っているので、それを一括して(10要素ごと)高値・安値をチェックし、インジケータに描画したいのです。
以下はそのコードです。
なぜ描かれていないのでしょうか?


x10配列の次元は?

10?
それなら、こう書き直した方がいい。

for(i=0; i<limit; i+=10)
       {
         int k;
         for(k=0; k<10; k++)
             {       
              x10[k] = MACD[i+k];  
             }
         int maxValueIdx=ArrayMaximum(x10);
         int minValueIdx=ArrayMinimum(x10);    
         MAX[i] = maxValueIdx;
         MIN[i] = minValueIdx;
       }
で、MAXとMINの配列に何を入れたいのかが明確でない。
 
状況は以下の通りです。orderSendで 1ロットの注文を出し、orderCloseで0.5ロットの注文を閉じる...。他のティッカーで新規に開いた注文を拾ってもらうにはどうしたらいいですか?
 
Xors писал(а)>>
状況は以下の通りです。orderSendで1ロットの注文を出し、orderCloseで0.5ロットの注文を閉じる...。が半分閉じてしまい、別のチケットで新しい注文を開いてしまうのですが、新しく開いた注文のチケットを素早く拾うにはどうしたらいいのでしょうか?


まさか
唯一の方法は、未決済注文と保留注文の間でブルートフォースすることです。

 
baltik писал(а)>>

lots=UseLots()。
if (lots==0) return(0);
i=OrderSend(Symbol()、OP_BUY、UseLots()、NormalizeDouble(Ask、桁)、スリッページ、Ask-StopLoss*点、Ask+TakeProfit*点、EA、マジック、0、ブルー)。

lots=UseLots()。
if (lots==0) return(0);
i=OrderSend(Symbol(),OP_SELL,UseLots(),NormalizeDouble(Bid, Digits),slimage,Bid+StopLoss*Point,Bid-TakeProfit*Point,EA,magic,0,Red).のようになります。

テスターで10件中1件、または25件中3件でエラー4107発生


また、報告されたスリッページの値や、小数点以下5桁、4桁の見積もりはどうなっているのか。
 
granit77 >>:

Проверьте соответствие ma_method, applied_price в МА и МАКД.

もうね。MAの12ではなく、120だったのです。驚きました!:)

 
注文した商品の通貨を知るにはどうしたらよいですか?(先物の場合)
 
Noterday писал(а)>>
アドバイスお願いします
MACDの値はすべて1次元配列MACD[] に入っているので、それを一括して(10要素ごと)高値・安値をチェックし、インジケータに描画したいのです。
以下はそのコードです。
なぜ描かれていないのでしょうか?
ArrayResize(MAX,Bars);
ArrayResize(MIN,Bars);
int k=1;
for(i=0; i<limit; i++)
       {
        MACD[i]= trali vali;
         if(i==10*k){k++;
          for(int r=0; r<10; r++)
          MAX[r]=MACD[ArrayMaximum(MACD,10,i-10)];
         
          for(int r=0; r<10; r++)
          MIN[r]=MACD[ArrayMinimum(MACD,10,i-10)];
         }
       }
でも、基準点にスナップする必要があるんです!