どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 1105

 
shtr:

うわあああああああああああああああああああああああああああああああああああああああああああああありがとうございました。これには反省が必要です。

もしかしたら、どこかに新ルールに関する「自習書」があるのでは?ページ番号が4桁なのはちょっとストレス...。

誰が簡単なんだ...このような初心者に関するトピックは、アーカイブにあと5つあります ))))

正直なところ、すでにプログラミングの経験(できればC++)があれば、ヘルプやcodobaseにある例で十分です。全く経験のない方は、まずC++のチュートリアルを勉強するとよいでしょう、MQLは構文が非常によく似ています。

 
evillive:

誰が今、楽をしているのか...。このような初心者に関するトピックは、アーカイブにあと5つあります ))))

正直なところ、すでにプログラミングの経験(できればC++)があれば、ヘルプやcodobaseにある例で十分です。全く経験のない方は、まずC++のチュートリアルを勉強するとよいでしょう、MQLは構文が非常によく似ています。

未経験者=C++チュートリアル; )))

ご協力ありがとうございました

 

親愛なる皆様、こんにちは。

通貨ペアを示す 矢印が表示されたときに、インジケータにアラートを追加したいのですが、ご教授ください。

自分でもやってみましたが、よく言われるように、知らないで忘れるのは難しい。ありがとうございました。



#property indicator_chart_window

#プロパティ indicator_buffers 4

#プロパティ indicator_color1 白

#プロパティ indicator_color2 白

#property indicator_color3 LightGreen

#プロパティ indicator_color4 レッド


extern int CountBars = 300;

extern string FS = " ** フィルタ感度:High <-[1..3]->Low ** ";

extern int Sensitivity = 2;

double g_ibuf_92[];

double g_ibuf_96[];

double g_ibuf_100[];

double g_ibuf_104[];

int gi_unused_108 = -1;


int init() {

IndicatorBuffers(4)です。

SetIndexStyle(2, DRAW_ARROW)を設定します。

SetIndexArrow(2, 233)を設定します。

SetIndexBuffer(2, g_ibuf_92)を設定します。

SetIndexStyle(3, DRAW_ARROW)を設定します。

SetIndexArrow(3, 234)を設定します。

SetIndexBuffer(3, g_ibuf_96)を設定。

SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID, 3, White)を設定します。

SetIndexBuffer(0, g_ibuf_100)を設定。

SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 3, White)を設定します。

SetIndexBuffer(1, g_ibuf_104);

SetIndexEmptyValue(0, 0)を設定します。

SetIndexEmptyValue(1, 0)を設定します。

SetIndexEmptyValue(2, 0)を設定します。

SetIndexEmptyValue(3, 0)を設定します。

SetIndexLabel(2, "買いシグナル");

SetIndexLabel(3, "Sell Signal")を設定します。

SetIndexLabel(0, "High")を設定します。

SetIndexLabel(1, "Low")を設定します。

SetIndexEmptyValue(0, EMPTY_VALUE)を設定します。

SetIndexEmptyValue(1, EMPTY_VALUE)を設定します。

SetIndexEmptyValue(2, EMPTY_VALUE)を設定します。

SetIndexEmptyValue(3, EMPTY_VALUE)を設定します。

string ls_0 = "Scalper Signal";

IndicatorShortName(ls_0)です。

if (Sensitivity < 1) Sensitivity = 1;

if (Sensitivity > 3) Sensitivity = 3;

を返します(0)。

}


int deinit() {

を返します(0)。

}


double sellSignal(int ai_0) {。

bool li_4 = TRUE;

if (Sensitivity > 2)

if (iHigh(Symbol(), Period(), ai_0 + 6) >= iHigh(Symbol(), Period(), ai_0 + 5)) li_4 = FALSE とする。

if (Sensitivity > 1)

if (iHigh(Symbol(), Period(), ai_0 + 5) >= iHigh(Symbol(), Period(), ai_0 + 4)) li_4 = FALSE とする。

if (Sensitivity > 0)

if (iHigh(Symbol(), Period(), ai_0 + 4) >= iHigh(Symbol(), Period(), ai_0 + 3)) li_4 = FALSE とする。

if (li_4) {。

if (iClose(Symbol(), Period(), ai_0 + 2) < iHigh(Symbol(), Period(), ai_0 + 3))

if (iClose(Symbol(), Period(), ai_0 + 1) < iLow(Symbol(), Period(), ai_0 + 3)) return (iHigh(Symbol(), Period(), ai_0 + 3) + 10.0 * ポイント)

}

を返します(0)。

}


double buySignal(int ai_0) {。

bool li_4 = TRUE;

if (Sensitivity > 2)

if (iLow(Symbol(), Period(), ai_0 + 6) <= iLow(Symbol(), Period(), ai_0 + 5)) li_4 = FALSE とする。

if (Sensitivity > 1)

if (iLow(Symbol(), Period(), ai_0 + 5) <= iLow(Symbol(), Period(), ai_0 + 4)) li_4 = FALSE とする。

if (Sensitivity > 0)

if (iLow(Symbol(), Period(), ai_0 + 4) <= iLow(Symbol(), Period(), ai_0 + 3)) li_4 = FALSE とする。

if (li_4) {。

if (iClose(Symbol(), Period(), ai_0 + 2) > iLow(Symbol(), Period(), ai_0 + 3))

if (iClose(Symbol(), Period(), ai_0 + 1) > iHigh(Symbol(), Period(), ai_0 + 3)) return (iLow(Symbol(), Period(), ai_0 + 3) - 10.0 * ポイント)

}

を返します(0)。

}


int start() {

int li_0 = IndicatorCounted();

if (li_0 < 0) return (-1);

if (li_0 > 0) li_0--;

int li_4 = Bars - li_0;

for (int l_count_8 = 0; l_count_8 < li_4; l_count_8++) {.

g_ibuf_92[l_count_8 + 3] = buySignal(l_count_8)となります。

g_ibuf_96[l_count_8 + 3] = sellSignal(l_count_8)となります。

if (buySignal(l_count_8) > 0.0 || sellSignal(l_count_8) > 0.0){

g_ibuf_100[l_count_8 + 3] = iHigh(Symbol(), Period(), l_count_8 + 3)とする。

g_ibuf_104[l_count_8 + 3] = iLow(Symbol(), Period(), l_count_8 + 3)とする。

}

}

を返します(0)。

}

ファイル:
 

こんにちは、ディガーです。

注文履歴の 結果がちょっと曲がってるんだけど。

戦略

1-ショートストップとロングプロフィットで、異なる方向に2つの注文を出す(実際にはロックする)。

もし、価格がレンジの外に順調に移動すれば、一方の注文のストップを倒し、もう一方の注文のロングプロフィットを取りに行く。

3 - 一方の注文のストップがヒットすると、その注文の始値のレベルで保留注文が出され、価格が戻ってくると、その注文は再び開かれます。

で、ショートストップのノックアウトによる利益確定まで、次の動きまでポジション状態に戻る。

目的

3ストップノックアウトをトレース するため、4次でMartinがトリガーされます。問題は、何かがうまくいかないことです。注文の収益性はOrderProfit()の履歴で判断しています。

しかし、OrdersHistoryTotal()がどのように機能するのか、まだ理解できていません。この機能は注文番号と注文数、どちらをチェックするのですか?

同様に、ポジションを削除した場合の解釈(損失とするか、何もしないか)も理解できない。履歴には損失以外にもいろいろなことが書かれているのに、このような状況で3連敗をどうやってトレースすればいいのでしょうか?

 
Fartarantula:

こんにちは、ディガーです。

注文履歴の結果がちょっと曲がってるんだけど。

戦略

1-ショートストップとロングプロフィットで、異なる方向に2つの注文を出す(実際にはロックする)。

もし、価格がレンジの外に順調に移動すれば、一方の注文のストップを倒し、もう一方の注文のロングプロフィットを取りに行く。

3 - 一方の注文のストップがヒットすると、その注文の始値のレベルで保留注文が出され、価格が戻ってくると、その注文は再び開かれます。

で、ショートストップのノックアウトによる利益確定まで、次の動きまでポジション状態に戻る。

目的

3ストップノックアウトをトレース するため、4次でMartinがトリガーされます。問題は、何かがうまくいかないことです。注文の収益性はOrderProfit()の履歴で判断しています。

しかし、OrdersHistoryTotal()がどのように機能するのか、まだ理解できていません。この機能は注文番号と注文数、どちらをチェックするのですか?

同様に、保留中の注文を削除した場合の解釈(損失とするか、全く何もしないか)も理解できない。履歴には損失以外にも様々な情報が記載されていますが、このような場合、3つの結果損失をどのように追跡すればよいのでしょうか?

保留中の注文は、トリガーがかかったか、削除されたかのどちらかであり、損切りされたものではないことです。

損失は成行注文(買い、売り)で確認する必要があります。

OrdersHistoryTotal() は、利用可能な取引履歴("履歴全体" モードが表示されている場合、口座への入出金を含む)の中の注文の量を返します。数値0は通常最初の入金、つまり最初の注文であり、数値OrdersHistoryTotal()-1は履歴の最後の注文である。

つまり、注文を最後から順にループさせ、同時に保留中の注文と失注をカウントする必要があるのです。

しかし、常に価格がストップで決済された注文のレベルに達するまで待ち、市場に応じて一気に注文を開くことができるのであれば、なぜ保留注文を行う必要があるのでしょうか。指値注文は口座を混乱させるので、この場合不要なリンクです。

 
Fartarantula: 戦略

1-ショートストップとロングプロフィットで、異なる方向(実際のロック)の2つの注文をオープンします。

2-価格がレンジから順調に移動すれば、一方の注文のストップを倒し、もう一方の注文でロングで利益を狙う。

プログラマーの目を通して、あなたの戦略を見たのです。価格が上昇すると、売りのSLに到達するので、そのSLとその上のどこかのTPで一つの買い注文が存在する。この場合、あなたはクローズド・オーダーで小さな損失を得ることに成功しました。では、保留中の注文が2つある場合の変形を考えてみましょう。2つの注文を出すのではなく、まさにSLがある場所に2つの保留注文を出してみましょう。価格がBuy Stoplに 達すると、買い注文が出され、同じポジションを持ちますが、損失はありません。そして、今一番気になること。価格が上昇するにつれて ...

 

...そして、あなたの主義主張で価格が上昇するにつれ、あなたのTPは遠のいていった。そして、その場その場での行動を考えれば、私よりも利益を取る可能性は低い。

また、並行してトレードしていなくても、あなたのTPはpipsの間、私のTPは事実上そうなっているのです。そして、それは常になります。あなたは市場に方向性のある動きの一部を与えるのです。

もし知らないのであれば、不幸にも2ポイントのスプレッドがあっただけでも、ポジティブなシステムが負けに変わってしまうと考えるべきでしょう。最初の数字から判断すると、5桁のスプレッドで20pips程度のスプレッドがあることになります。

というのも、「目で見て」同時発注した注文の差は、図によると40pipsもあるからです。

それは重要ではありません...あなたはコードスニペット、3つのノックアウトストップのシリーズを正しく検出する必要があります。 なぜ、みんなシステムを修正しようとするのか?そして、前述の同志の方法論は

も動作しません。市場は単にあなたが開くことを許さないかもしれないし、開くべきでないところで開くかもしれません。皆さん、自分の経験を共有したいという気持ちはよくわかります。でも、3ストップだけなぞればいいんです。

全て揃いました。ただ、たまたまダブルリングの順番を間違えていたのを確認しました。結果的にはHistototalが適当に出したので、履歴からの損失でクローズドオーダーを判断するループでオーダーが外れてしまったのです。

 
Fartarantula 全ては線上にある。ただ、偶然にもダブリングと順番を間違えて滑らせてしまったのを見た。結果的にはHistototalが適 当に出したので、履歴からの損失でクローズドオーダーを判断するループでオーダーが外れてしまったのです。

コーダー資格から脱却し、プログラミングの基礎を学ぶ必要がある。詳しくはこちら... そして、ここにも。

ここで問題です。著者が言うように、日曜日に同じアカウントでこのスクリプトでHistototal、何を返します。

void OnStart()
{
  Alert("Cчет " + DoubleToStr(AccountNumber(), 0),
        "  Дата ", TimeToStr(TimeLocal(),TIME_DATE),
        "  Ордеров ", OrdersHistoryTotal());
}

なぜ違うのか?

1つのアカウントでの注文が少なく、多い場合は、0 228 228 216 98? また、注文が少ない場合は、処理が速くなります!

クライアントは汗だく - 作業は不可能、端末は不具合、Histototalは 欲しいものを出した、ループはそれを飛ばした !

 

皆さん、こんにちは。インジケーターの矢印を上げるのを手伝ってください。下のものは大丈夫ですが、上のものはローソク足の上にあります。

ObjectSet(Arrow_name_jack1, OBJPROP_YDISTANCE,20) を試しましたが、うまくいきません。矢印(オブジェクト)のアンカー ポイントが上になっていますが、上に移動させるにはどうしたらよいですか?

//display signal arrow 
      RefreshRates(); 
   
      if(   (High[i+1]  >upBuffer[i+1] ) 
         && (Close[i+1] >Open[i+1]     ) 
         && (Close[i]   <Open[i]       ) 
        )            
      {  //draw a dot on top of the bar
         string Arrow_name_jack1 = "AboveTopBand_SellBar_jack1_" + TimeToStr(Time[i],TIME_DATE|TIME_SECONDS);  //TimeCurrent()
         ObjectCreate(Arrow_name_jack1, OBJ_ARROW, 0, Time[i], High[i]+iATR(NULL,0,20,i)/5);//5*pips);  //OBJ_ARROW=22,window=0,
//???????????? так не получилось         //  ObjectSet(Arrow_name_jack1, OBJPROP_YDISTANCE,20);
            ObjectSet(Arrow_name_jack1, OBJPROP_ARROWCODE, 242          );  //159
            ObjectSet(Arrow_name_jack1, OBJPROP_COLOR,     Yellow    );  //Magenta
            ObjectSet(Arrow_name_jack1, OBJPROP_STYLE,     STYLE_SOLID  );
            ObjectSet(Arrow_name_jack1, OBJPROP_WIDTH,     2            ); 
            
      }
      else
      if (   (Low[i+1]   <dnBuffer[i+1] ) 
          && (Close[i+1] <Open[i+1]     ) 
          && (Close[i]   >Open[i]       ) 
         )            
      {  //draw a dot on top of the bar
          Arrow_name_jack1 = "BelowBotBand_BuyBar_jack1_" + TimeToStr(Time[i],TIME_DATE|TIME_SECONDS);//TimeCurrent()
         ObjectCreate(Arrow_name_jack1, OBJ_ARROW, 0, Time[i], Low[i]-iATR(NULL,0,20,i)/5);//5*pips);  //OBJ_ARROW=22,window=0,
            ObjectSet(Arrow_name_jack1, OBJPROP_ARROWCODE, 241          );//159
            ObjectSet(Arrow_name_jack1, OBJPROP_COLOR,     Yellow   );//Magenta
            ObjectSet(Arrow_name_jack1, OBJPROP_STYLE,     STYLE_SOLID  );
            ObjectSet(Arrow_name_jack1, OBJPROP_WIDTH,     2            ); 
      }
   }//end for(i = limit; i >= 0; i--)
 
mikanit:

皆さん、こんにちは。インジケーターの矢印を上げるのを手伝ってください。下のものは大丈夫ですが、上のものはローソク足の上にあります。

ObjectSet(Arrow_name_jack1, OBJPROP_YDISTANCE,20) を試しましたが、うまくいきません。矢印のアンカーポイント(オブジェクト)が上部にあるのですが、どのように上に移動させるのですか?

ObjectSetInteger(0,Arrow_name_jack1,OBJPROP_ANCHOR,ANCHOR_BOTTOM) です。

混乱を避けるため、上下の矢印の名前を格納するために、別の変数を使用することをお勧めします。

そうそう、インジケーターにオブジェクトで矢印を描くのは倒錯です。インジケーターバッファーが あります。

SetIndexStyle(0,DRAW_ARROW,0,1,clrRed);

    SetIndexArrow(0,242);