アスク! - ページ 82

 

Codersguru お願い助けて

コーダー・グル

MQLの経験はありませんが、他のいくつかのインジケータからコードをまとめました。コードをコンパイルするときにエラーはありません。

事前にたくさんありがとうございます。

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

#property copyright "forex-tsd" (プロパティコピー)

#property リンク "https://www.forex-tsd.com"

#property indicator_separate_window(インジケーター・セパレート・ウィンドウ

#property indicator_buffers 2

#property indicator_color1 Lime(インジケーターカラー1ライム

#property indicator_color2 クリムゾン

#property indicator_level1 0 (インジケータレベル1)

double ExtMapBuffer1[];

double ExtMapBuffer2[];

double valbull[];

double valbear[];

//+------------------------------------------------------------------+

//| カスタムインジケータ 初期化関数

//+------------------------------------------------------------------+

int init()

{

IndicatorBuffers(3);

SetIndexBuffer(0,ExtMapBuffer1)を設定します。

SetIndexDrawBegin(0,2);

SetIndexLabel(0, "ExtMapBuffer1");

SetIndexBuffer(1,ExtMapBuffer2);

SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 4).SetIndexDrawBeginを設定します。

SetIndexDrawBegin(1,2);

SetIndexLabel(1, "ExtMapBuffer2");

//---- インジケータ

//----

return(0);

}

//+------------------------------------------------------------------+

//| カストマーインディケーター初期化関数

//+------------------------------------------------------------------+

int deinit()

{

//---- TODO: ここにあなたのコードを追加してください。

//----

return(0);

}

//+------------------------------------------------------------------+

//| カスタムインジケーターイテレーション関数

//+------------------------------------------------------------------+

int start()

{

int shift,counted_bars=IndicatorCounted();

double valbear[], valbull[];

//---- エラーの可能性をチェック

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

//---- 最後にカウントされたバーが再カウントされる

if(counted_bars>0) counted_bars--;

shift=Bars-1;

while(shift>=0)

{

valbull[shift]=iBullsPower(NULL, 0, 13,PRICE_CLOSE,0);

valbear[shift]=iBearsPower(NULL, 0, 13,PRICE_CLOSE,0)とします。

if (valbull[shift]>0)。

{

ExtMapBuffer1[shift]=valbull[shift]。

ExtMapBuffer2[shift]=0。

}

さもなくば

{

ExtMapBuffer2[shift]=valbull[shift]。

ExtMapBuffer1[shift]=0。

}

shift--;//

}

//---- 警告モジュール

#define SIGNAL_BAR 1

//---- 最後のバーの時刻が格納されるスタティック変数

//---- 最後のアラート方向が格納されます

static int PrevSignal = 0, PrevTime = 0;

//---- 分析するために選択されたバーがゼロバーでない場合。

// アラートを何度もチェックする必要はありません。

//---- 何度もチェックする必要はありません。新しいバーが形成され始めない場合、終了します。

if(SIGNAL_BAR > 0 && Time[0] <= PrevTime )

return(0);

//---- このバーがチェックされたことをマークする

PrevTime = Time[0];

if(PrevSignal <= 0)

{

if(valbull[SIGNAL_BAR] > 0 )

{

PrevSignal = 1;

Alert("BullChannell_positiv (", Symbol(), ", Period(), ")) - BUY!!!");

}

}

if(PrevSignal >= 0)

{

if(valbull[SIGNAL_BAR] < 0 )

{

PrevSignal = -1;

Alert("BearChannell_negativ (", Symbol(), ", ", Period(), ")) - 売れ!!」)。

}

}

//---- 警告モジュールを終了する

//----

return(0);

}

//+------------------------------------------------------------------+

 

未決済注文を 区別する関数はどのように使用しますか?

未決済注文と注文中の注文を区別する関数を使用するにはどうすればよいですか?

ありがとうございます。

 
vntb:
開いている注文と保留中の注文を区別するために関数を使用するにはどうすればよいですか?ありがとうございます。

OrderType()をチェック する :

OrderType() == OP_BUY //買い注文(オープン)

OrderType() == OP_SELL //売り注文(受付中)

OrderType() == OP_BUYLIMIT //買い指値注文 (保留)

OrderType() == OP_SELLLIMIT //売り指値注文(約定待ち)

OrderType() == OP_BUYSTOP //買い逆指値注文(約定待ち)

OrderType() == OP_SELLSTOP //売り逆指値注文(約定待ち)

 

EAにおけるiMAOnArray

こんにちは、皆さん。

インジケータ(CCI、Force、RSIなど)の移動平均のクロスに基づくEMAを行おうとしています。しかし、配列を宣言し、iMAOnArray関数を 実行して変数を作成する方法が理解できません。

例えば、以下のコードでは、チャートのRSIデータをバッファに入れ、そのデータを利用して移動平均を生成し、トレードのトリガーとしたいのです。私は何を間違えているのでしょうか?

コメントや提案をありがとうございます。

double RSI[];

ArrayResize(RSI,Bars);

ArraySetAsSeries(RSI,true)を実行します。

for(int i=Bars; i>=0; i--)

{

RSI = (iRSI(NULL,0,RSIPeriod,RSIPrice,i));

}

double Green0 = iMAOnArray(RSI,0,GreenPeriod,0,GreenPrice,0)。

 

こんにちは

アラート付きのステップモーメンタムをお持ちの方いらっしゃいますか?

素晴らしいインジケーターになると思います。

ありがとうございます。

よろしくお願いします。

 

レベルによる取引の終了

こんにちは、私は価格が特定のレベルに達したときに取引を終了する方法を知りたいのですが。例えば、MAラインより55ポイント上。私はOrderSendのTakeProfit部分にMAを含めようとしましたが、テスターは私のEAを拒否しました。"invalid something" エラーメッセージで拒否されました。ありがとうございました。

 
Sendra:
こんにちは、私は価格が特定のレベルに達したときに取引を終了する方法を知りたいのですが。例えば、MAラインより55ポイント高い。私はOrderSendのTakeProfit部分にMAを含めようとしましたが、テスターは私のEAを拒否しました。"invalid something" エラーメッセージで拒否されました。ありがとうございました。

まず、移動 平均を取得します。

double MA = iMA(...);

そして、TakeProfitを次のように計算します。

double TP = MA + (55*Point); // または TP = MA-(55*Point); in the Sell case.

 

うまくいった!

どうも、CodersGuruです。うまくいきました。しかし、それはまた私に考えさせる:私は固定されていない特定のレベルに利点を 移動することができれば、私は(trailingstopを使用せずに)私のストップロスで同じことを行うことができます。

そして私は試してみました。

しかし、結果は芳しくありませんでした。だから、私はtrailingstopを使わなければならないのだと思います。ということでしょうか?(注意:私はまだtrailingstopのコードを学んでいません。)

ありがとうございました。

 

内部トレーリングストップ

Sendra:
ヘイ、ありがとう、CodersGuru。それは動作します。しかし、それはまた私に考えさせる:私は固定されていない特定のレベルにテイクプロフィットを移動することができれば、私は(trailingstopを使用せずに)私のストップロスで同じことを行うことができます。

で、やってみた。

うまくいったのですが、結果が悪かったです。だから、私はtrailingstopを行う必要があると思います。ということでいいのでしょうか?(注意:私はまだtrailingstopのコードを学んでいません。)

ありがとうございました。

内部トレーリングストップのためにこんなことをしました。(これはロングオーダーの例です) これはうまくいっているようです。 これが役に立つといいのですが。

extern int Trailing_Stop=20;

static double Trailing_Long;

bool Read_Long_Open;

if (ロングエントリーの判定を入れる)

{

ここでOrdersend()関数

Read_Long_Open=true;

}

if (Read_Long_Open==true)

{

if(OrderSelect(T_1L, SELECT_BY_TICKET)==true)

{

Trailing_Long=OrderOpenPrice();

Print(" Trailing_Long =",Trailing_Long);

Read_Long_Open=false;

}

}

if (Read_Long_Open==false)。

{

if (Trailing_Long < Bid)

{

Trailing_Long=Bid;

Print("Adjusted Trailing_Long =",Trailing_Long);

}

}

if (Bid <= Trailing_Long-Trailing_Stop*Point)

{

OrderClose()関数

Print("ロングオーダーがクローズしました");

}

 

感謝

こんにちは、Wolfeさん。

あなたのコードを試しましたが、代わりにもっと否定的な結果が出ました。なぜかは聞かないでください、私も答えを知らないので。私はまだコーディングのヒット・アンド・ランの段階なのです。でも、とにかくありがとう。あなたのコードは、私に十分な結果をもたらす自分自身のコードを書くための十分なインスピレーションを与えてくれました。

だから、ありがとう。