コーディングの方法は? - ページ 233

 
CoeyCoey:
皆さん、こんにちは。

チャートの時間から通貨の強弱を表示する通貨の強弱メーターの改造に取り組んでいます。 現在、使用しているコードです。

aHigh = MarketInfo(mySymbol,MODE_HIGH); // set a high today

aLow = MarketInfo(mySymbol,MODE_LOW); // set a low today

aBid = MarketInfo(mySymbol,MODE_BID); // set a last bid

aAsk = MarketInfo(mySymbol,MODE_ASK);

MODE_HIGHとMODE_LOWは、現在の日の高値と安値を取得することは理解しています。 どうすれば、現在の時間枠の高値と安値を取得できるでしょうか?

ありがとうございます。

追伸:私はプログラマではないので、小さな単語を使用してください:)

MarketInfo()を使用する必要はありません。現在の高値を取得したい場合は、High[0] と Low[n], Close[n], Open[n] を使用します。n' は現在のバーからのオフセットを意味します。例えば、現在のバーの前のバーのHighを取得するには、現在が0で、その前のバーは現在から1のオフセットを持つので、High[1]を使用することができます。

チャート上で見ている以外のタイムフレームのHigh、Low、Open、Closeを調べるには、iHigh()、iLow()、iClose()、iOpen関数を 使用することができます。

以下、使用例。

double high_of_gbpusd_4hours_current = iHigh("gbpusd", period_h4, 0);

 

ありがとう! 君たちは最高だ!

 
mfurlend:

私はかなりそれが動作していると思うが(よく分からない?)、何らかの理由で配列は正当な値と一緒に多くの '0' 値で満たされる。

私ならこうします。

#define TICKET 0

#define PRICES 1

double ResumeArray[0,2];

int CheckForResume()

{

ResumeCheck = TimeLocal()+(PERIOD_M1*60)*5;

bool success = false;

int k;

for (int i = 0; i<OrdersTotal();i++)

{

if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))continue;

if (OrderType() > OP_SELL || OrderProfit()> Cutoff)continue;

int arraycount=ArrayRange(ResumeArray,TICKET);

bool found = false;

for (k=arraycount-1; k>=0; k--)

{

if (ResumeArray[k,TICKET] == OrderTicket())

{

found = true;

if (ResumeArray[k,PRICES] + Cutoff < OrderProfit())break;

else

{

success=true;

Print ("ELSE");

ResumeArray[k,PRICES] = OrderProfit();

break;

}

}

}

if (found == false)

{

arraycount = ArrayResize(ResumeArray,arraycount+1)/2;

ResumeArray[arraycount-1,TICKET] = OrderTicket();

ResumeArray[arraycount-1,PRICES] = OrderProfit();

success=true;

}

}

if(success)return (1);

else return(0);

}

TICKETとPRICESの定義を使用する必要はありません。2次元配列がどのように機能するかを示すために定義しています。TICKETとPRICESの出現回数をすべて0と1に置き換えるだけです。

for」ループの「return」コマンドを「break」に置き換えたので、すべてのオープンオーダーが処理されます。

注意点としては、決済された注文は配列から削除 されないので、サイズが大きくなり続け、プラットフォームが遅くなることです。

d4v3

 

棒グラフの履歴の制限

このRenkoLiveChart_v3.2スクリプトにbars limitオプションを追加していただけると幸いです。

このスクリプトはコンピュータのリソースを 多く消費します。

ファイル:
 

基本的な注意喚起のEA

........................................................................................................

 

ノイズ除去

トレードのノイズを制限し、より速くカットオフする方法を探していました。

このアイデアは非常にシンプルです。

ノイズはこの写真にあるように、市場の状況に合わせて変化し続けるという意味でのダイナミックなものです。

ここに私が作ったクローズ用のコードがあります。もし誰かがこれを使いたいなら、自由に使ってください。

int profit = OrderProfit() + OrderSwap() + OrderCommission();

int Trades = ScanTrades(0,0);

if (Trades == 0) TS1 = 0;

if ((ScanTrades(2,0) > 0) && (profit < 0))TS= ((MarketInfo(Symbol(),MODE_BID)))。+ノイズ +スリッページ);

if ((ScanTrades(2,0) > 0) && (profit > 0))TS= ((MarketInfo(Symbol(),MODE_BID))。+ noise );

if ((ScanTrades(1,0) > 0) && (利益<0))TS= ((マーケット情報(シンボル),MODE_BID))- noise - Slippage);

if ((ScanTrades(1,0) > 0) && (profit > 0))TS= ((マーケット情報(シンボル(),MODE_BID))- noise );

//ショート

if ((ScanTrades(2,0) > 0)&& (TS1 ==0 ))TS1 = TS;

if ((ScanTrades(2,0) > 0)&& (TS < TS1))TS1 = TS。

if ((ScanTrades(2,0) > 0) && (MarketInfo(Symbol(),MODE_BID) > TS1)) CloseOrder(2);

//ロング

if ((ScanTrades(1,0) > 0)&& (TS1 ==0 ))TS1 = TS;

if ((ScanTrades(1,0) > 0)&& (TS > TS1))TS1 = TS。

if ((ScanTrades(1,0) > 0) && (MarketInfo(Symbol(),MODE_BID) < TS1)) CloseOrder(1)です。

バーチャートから現在と過去の高値と安値を取得する最良の方法は何でしょうか。 私は変数 "ノイズ "を作成する必要があります。

私はそれを試してみましたが、そのヒットアンドミスは、t1とl1は時々0であり、そのようなものがある場合は、全体のEAが "終了 "の間に立っているすべてのように、それは最も落ち込んでいます。

double hh2=High;

double ll2=Low;

double hh3=High;

double ll3=Low;

double t1,l1,noise;

//ノイズ = 前のバーの重なり

if ((hh2 - hh3) > 0 )t1 =(hh3); //基本的に2つのバーの間で最も低い「高」バーを選ぶ -ブルリッシュ

if ((hh3- hh2) > 0 )t1=(hh2); //ベアリッシュ

if ((ll2 - ll3) > 0 )l1 =(ll2); //最高値の安値バーを選ぶ 強気

if ((ll3-ll2) > 0 )l1=(ll3); //ベアリッシュ

ノイズ =(t1-l1);

Print("t1 = ",t1,"; l1 = ",l1);

プリントの典型的な結果は、t1=0 l1=94.3 その最も厄介なのは、hh2とhh3が==なので、私はちょうど何をすべきかわからない 私のコードで問題を見ることができません。

ファイル:
cutoff.jpg  5 kb
 

どなたか教えてください。

3つの指標をベースにした新しい指標を作る方法を教えてください。3つの指標をベースに戦略を立てている のですが、1つの指標を作りたいのですが。

 

eaの修正お願いします

このEAに以下の変更を加えるのを手伝ってください。

1)時間足での追加

A) fisher_ 11 インジケータ、設定33,0.5,0.5

B) tcf smoothed indicator 設定17,8,0.7

c) また、dinap _basic インジケータは、シグナルの方向に対して描画された場合、取引を許可しないようにしたいです。

2) 15分足で追加

A) スーパートレンドインディケーター

B) トレンドロードインジケーター

資金管理

1) 口座の合計(1.5%)の3%の損切りで2つのトレードをそれぞれオープンする。

2) 80ピップスの利益 確定または2.2%で1回、3.8%の利益確定で2回目の取引を行う。

3) 4連敗後の5回目の取引ではロットサイズを2倍にし、その後の取引では2連勝までロット数を直線的に増やし、デフォルトのロットサイズに戻す。

4) トレーリングストップは12pips(元ローソク足atrstops_v1インジケータの売りは上、買いは下)で全トレードに対応。

以上、よろしくお願いします。

ファイル:
 

1行のコードで全く同じことが実現できたはずです。

GlobalVariableSet("TRENDSET_"+Symbol());

また、時間軸を追加することで、さらにユニークなものにすることができます。

正直なところ、あなたの投稿のポイントはよくわかりません。

ではまた。

ラックス

 

iCustomを使用してH1から値を呼び出すには?

こんにちは。

とてもシンプルなインジケーターを作ろうとしているのですが、H1からLaguerreの値を呼び出すことができません。

私は何をしたいのか:

1M TFを使用

買いシグナル:ラゲール0.15を超え、かつラゲールH1 > 0.75。

売りシグナル:ラゲールクロス0.75で頭打ち、ラゲールH1 < 0.15

単純なクロスのインジケータを作ったらうまくいったのですが、問題はラゲールH1の値をチェックしようとしたときです。

2つの方法を試してみました。

まず1つ目。

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 SeaGreen

#property indicator_color2 Red

#property indicator_width1 3

#property indicator_width2 3

double CrossUp[];

double CrossDown[];

extern bool SoundON=true;

double alertTag;

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

//| Custom indicator initialization function |

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

int init()

{

//---- indicators

SetIndexStyle(0, DRAW_ARROW, EMPTY,3);

SetIndexArrow(0, 233);

SetIndexBuffer(0, CrossUp);

SetIndexStyle(1, DRAW_ARROW, EMPTY,3);

SetIndexArrow(1, 234);

SetIndexBuffer(1, CrossDown);

//----

return(0);

}

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

//| Custom indicator deinitialization function |

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

int deinit()

{

//----

//----

return(0);

}

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

//| Custom indicator iteration function |

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

int start() {

int limit, i;

int counted_bars=IndicatorCounted();

//---- check for possible errors

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

//---- last counted bar will be recounted

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

for(i = 0; i <= limit; i++) {

if ( (iCustom(NULL,0,"Laguerre",0.66,9500,0,i) > 0.15) && (iCustom(NULL,0,"Laguerre",0.66,9500,0,i+1) < 0.15)

&&(iCustom(Symbol(),PERIOD_H1,"Laguerre",0.66,9500,0,i) > 0.75)) //check for buy signal

{

CrossUp = Close;

}

else if ( (iCustom(NULL,0,"Laguerre",0.66,9500,0,i) 0.75)

&& (iCustom(Symbol(),PERIOD_H1,"Laguerre",0.66,9500,0,i) < 0.15)) //check for sell signal

{

CrossDown = Close;

}

if (SoundON==true && i==1 && CrossUp > CrossDown && alertTag!=Time[0]){

Alert("SHORT signal on ",Symbol()," ",Period());

alertTag = Time[0];

}

if (SoundON==true && i==1 && CrossUp < CrossDown && alertTag!=Time[0]){

Alert("Long Signal on ",Symbol()," ",Period());

alertTag = Time[0];

}

}

return(0);

}[/CODE]

second one:

[CODE]//+------------------------------------------------------------------+

//| Shift.mq4 |

//| me |

//|

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

#property copyright "me"

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 Lime

#property indicator_color2 Red

#property indicator_width1 4

#property indicator_width2 4

//---- buffers

double ExtMapBuffer1[];

double ExtMapBuffer2[];

bool Fact_Up = true; // Fact of report that market..

bool Fact_Dn = true; //..is bullish or bearish

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

//| Custom indicator initialization function |

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

int init()

{

//---- indicators

SetIndexStyle(0,DRAW_ARROW);

SetIndexArrow(0,241);

SetIndexBuffer(0,ExtMapBuffer1);

SetIndexEmptyValue(0,0.0);

SetIndexStyle(1,DRAW_ARROW);

SetIndexArrow(1,242);

SetIndexBuffer(1,ExtMapBuffer2);

SetIndexEmptyValue(1,0.0);

//----

return(0);

}

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

//| Custom indicator deinitialization function |

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

int deinit()

{

//----

//----

return(0);

}

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

//| Custom indicator iteration function |

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

int start()

{

//int limit;

int counted_bars=IndicatorCounted();

//---- last counted bar will be recounted

if(counted_bars>0) counted_bars--;

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

//limit=Bars-counted_bars;

//----

double MA; // MA value on 0 bar

double MA2;

double MA3;

double MA4;

//--------------------------------------------------------------------

double value1, value2, value3;

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

//---- main loop

//for(int i=0; i<limit; i++)

{value1=0.0;

value2=0.0;

value3=0.0;

//--------------------------------------------------------------------

// Checking if bullish

if( (iCustom(Symbol(),NULL,"Laguerre",0,i) > 0.15) && (iCustom(Symbol(),NULL,"Laguerre",0,i+1) < 0.15) && Fact_Up == true

&&(iCustom(Symbol(),PERIOD_H1,"Laguerre",0,i) > 0.75))

{

Fact_Dn = true; // Report about bullish market

Fact_Up = false; // Don't report bullish market

// Alert("BUY SIGNAL.");

value1=Open;

}

//--------------------------------------------------------------------

// Checking if bearish

if( (iCustom(Symbol(),NULL,"Laguerre",0,i) 0.75) && Fact_Dn == true

&&(iCustom(Symbol(),PERIOD_H1,"Laguerre",0,i) < 0.15))

{

Fact_Up = true; // Report about bearish market

Fact_Dn = false; // Don't report bearish market

// Alert("SELL SIGNAL.");

value2=Open;

}

ExtMapBuffer1=value1;

ExtMapBuffer2=value2;

}

//----

return(0);

}

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

赤い 線が問題で、赤い線がなければ 完璧に 動作します。

(iCustom(Symbol(),PERIOD_H1, "Laguerre",0,i) < ......) をやってみた。

(iCustom(Symbol(),PERIOD_H1,Laguerre,0,0)<・・・・・・)

(iCustom(Symbol(),60, "Laguerre",0,i))<・・・・・・・)

(iCustom(Symbol(),60, "Laguerre",0,0))<・・・・・・・・)

(iCustom(Symbol(),PERIOD_H1,Laguer re",0.66,9500,0,i) という変数でもやってみた。

iF i put:

Print(iCustom(Symbol(),60, "Laguerre ",0,i)); ifの前は乱数が返される...

しかしPrint(iCustom(Symbol(),60, "Laguerre ",0,0));では、H1からの良い値が返されるのです。

iCustom(Symbol(),60, "Laguerre",0, 0); を "if" の中で使っても、問題は同じままだ。

問題は、"for "と "i "とiCustomの "shift "の値にあるのですが、それがわかりません。

あなたの助けを非常に歓迎します!

私が使っているLaguerreのインジケータを添付しましたので、試してみてください。

もし誰かがゼロからそれを再コード化する準備ができているならば、躊躇しないでください。

私をイライラさせる....

ファイル:
laguerre.mq4  3 kb