[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 134

 
klyuchnikk:

皆さん、こんにちは。

履歴(分析用)で動作するExpert Advisorを持っています。注文を出す時間(時間、分)のパラメータを手動で設定しました。設定した日付の範囲内でEAを実行し、注文時間を変更して再度実行するのです。1日96回(15分後)やっています。どうすれば勝手にループさせることができるのでしょうか?

何かお探しですか?
 
artmedia70:
改めてお聞きしますが、具体的にはいつ頃発注されるのですか?あなたのコードで答えないで ください(私はそれを理解したいわけではありません - 分析のための独自のコードは十分にあります)。

例:あの距離でMAの上/下にポーズを入れたい、ただし・・・。...ヤダヤダヤダヤダ...

2回目なので説明してください。私たちは、とっくにあなたの問題を解決しているはずです。


今のところ、fastMaと slowMaが 交差している状態ですが...。...ということで、どこで買おうかと探しているところです。次に、価格すなわちアスク(買いを検討しているため)がfastMa( 正確な値はなく、ある程度の偏差が必要で、i_thresholdFromMaと 改名)に 達するまで待ちます。価格がfastMa +- i_thresholdFromMa に達するとすぐに、Expert Advisorはバイストップを (fastMa + buyHear * pt) に配置する必要があります。

私が考え出したものは、ある端末では動作せず、別の端末では常に動作するわけではありません。全体的に何かがおかしい。

buyHear機能の最後のバリエーションはこちら。

//+-------------------------------------------------------------------------------------+
//| Открытие длинной позиции                                                            |
//+-------------------------------------------------------------------------------------+
bool OpenBuy()
{
   int ticket = -1;
   double OOP = fastMa + buyHear * pt;
   
   if ((ND(OOP) - Ask) >= g_stopLevel)           
   {
       if (ND(OOP) > Ask)           // Проверка что цена открытия выше Ask, т.к. у нас вход отложенником
       {
           ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(OOP), 3, 0, 0, NULL, i_magic, 0);
       }
   }
   if (ticket > 0)
   {
       return (true);
   }
   else
    
   Alert (GetLastError());
}
以下は入力パラメータです。
extern double i_thresholdFromMa = 5;                           // Отступ от МА
extern double buyHear = 10,                                    // Расстояние от МА до отложки на бай

int init()
{
   if (Digits == 1 || Digits == 3 || Digits == 5)
       pt = Point * 10;
}

スクリーンショットで見ることができるエラー(OrderSend()では価格が赤いビーズの上に供給され、スクリーンショットで見た注文は下にある......)。

オープンプライス・ジョイント

artmedia70:
もうひとつ、fastMAとslowMAをグローバルに定義しているのに、なぜ関数に渡すのでしょう?すべての関数は、呼び出された関数にパラメータを渡さずに、とにかくそれらを見ることができます。

そして、グローバルでない以前は、startではなく、特定の関数で宣言されていました。しかし、どの関数でも使われていないため、毎回取得することは、言ってみれば「プログラマーとしてのマナー違反」であり、異なる関数に同一のコード行が存在することは違和感があるのです。

アルチョム、スタート地点に立つと、ちゃんとしたものが出てくるのかな?つまり、1クリック ごとに値が受け取れるということです。高すぎるのでは?私はプログラマーではないので、このような疑問が浮かぶことがあるのですが...。

 
Tincup:

その答えは私にはよくわからないので、もう一度質問させてください。取引条件を設定する際に、正しく理解されましたか?

対応するバー数のMA値を逆向きに使用する必要がありますが、画像内の黄色い矢印で示された値は使用しないでください。

ご回答を理解した上で、図を描きました。



実はこの質問、少しずれているんです。問題は、曲線のシフトではなく、Expert Advisorがバッファから取得する必要があるバーでの値です。これを理解する必要があります。また、バイアスとバッファからの値取得の間には、何の対応もありません。
 

こんにちわ

第一問


A=true

15分前のImacd値(Main Line)が30分前より小さい場合

 
Claus084:

こんにちわ

第一問

A=true

15分前のImacd値(Main Line)が30分前より小さい場合

いや、もっと前へ!
 
doubleiMACD() 文字列 symbol, int timeframe, int fast_ema_period, int slow_ema_period, int signal_period, int applied_price, int mode, int shift)
移動平均の収束・発散の計算を行います。OMAがMACDヒストグラムと呼ばれるシステムでは、この指標は2本の線で描かれます。 クライアント端末では、移動平均の収束/発散はヒストグラムとして描かれます。
パラメータ
記号 - シンボル名:指標となるデータのシンボル。NULLはカレントシンボルを意味する。
タイムフレーム - 期間チャートの期間の いずれかを指定することができます。0は現在のチャートの期間を表します。
ファストエマ期間 - 高速移動平均を算出するための平均化期間。
スローエマ期間 - 低速移動平均を算出するための平均化期間。
信号周期 - 信号線算出のための平均化期間。
適用価格 - 使用した価格です。価格定数の いずれかを指定することができます。
モード - 指標となるライン指数。指標となる行の識別子の 値のいずれかを指定することができる。



ここでの質問は、私の理解が正しければ、



- 指標バッファから受け取った値のインデックス(現在のバーから指定した期間分後ろに相対的にシフト)。


何期
または、現在のバーではなく、前のバーからmacdの値を取得するにはどうすればよいのでしょうか?

int start ()
{
bool A=trueif
(iMACD(NULL,15,12,26,9,PRICE_CLOSE,MODE_MAIN,1)<iMACD(NULL,15,12,26,9,PRICE_CLOSE,MODE_SIGNAL,2)) { A==true; } return; } } } { A=true(NULL,12,9,PRACE,MODE_SIGNAL
))を返す。

 

チャートの期間を クリックして、どの期間か見てみましょうそして、最後の場所で前のバー(シフト= 1)から現在のバー(シフト= 0)を見つけます。

double MA0 = iMACD(symbol,timeframe,fast_ema_period,slow_ema_period,signal_period,applied_price,mode,0);//текущий бар
double MA1 = iMACD(symbol,timeframe,fast_ema_period,slow_ema_period,signal_period,applied_price,mode,1);//предыдущий бар


それよりも、S.コバレフの教科書の勉強を始めましょう!
 
オープン価格」テストモードでは、テスターは始値のみを 使用するのか、始値、終値、高値、安値を使用するのか、アドバイスをお願いします。
 
xant:

また、こんにちは。

以下の問題を解決する方法をご教示ください。

コンパイルされたインジケーターがあります。コードは使用できません。この指標は、メインチャートウィンドウの価格水準を反映したものです。これらのレベルをEAに使用したいのですが、iCustom()関数を使用してインジケータを呼び出すことができません - 表示されたレベルはグラフィックオブジェクトです。それ以外の、例えばオブジェクト名や時間からデータを読み取ることは可能でしょうか?すべてのレベルの名前がわかっており(インジケーターの設定で利用可能)、オブジェクトは週に一度更新されます。

私はまだプログラミングの経験が浅いので、すぐに言いたいのですが、有益なご返答をいただけると大変ありがたいです。

これは良いアイデアだと思います。グラフィカルなオブジェクトは、名前で認識されます。レベルは、OBJ_TREND(トレンドライン)とOBJ_HLINE(水平線)という2つの(基本)タイプのグラフィックオブジェクトで指定することができます。私の理解では、これらのオブジェクトの2つのプロパティ(価格と、場合によっては時間)が必要です。

    //---- Уровень для горизонтальной линии
    double ld_Level = ObjectGet (Name, OBJPROP_PRICE1);
    //---- Уровень для трендовой линии на текущем баре
    ld_Level = ObjectGetValueByShift (Name, Bar);
    datetime ldt_Time = ObjectGet (Name, OBJPROP_TIME1);
こんな感じ。
 
Sancho77:
アドバイスお願いします。「オープン価格」によるテストモードでは、テスターはオープン、クローズ、高値、安値のみを使用しますか? 。

そう、建値のみ です。だからこそ、EAを分析するときにそれを考慮することが重要なのです。例えば、ローソク足のテールがチャネルをブレイクした場合、EAはそれに気づかないかもしれませんが、プログラムロジックにそれを書き込むことで問題を解決することができます。