コーディングの方法は? - ページ 233 1...226227228229230231232233234235236237238239240...347 新しいコメント joannesnoel 2010.05.02 03:05 #2321 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); 削除済み 2010.05.02 03:22 #2322 ありがとう! 君たちは最高だ! d4v3 2010.05.02 07:28 #2323 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 How to code? エキスパートアドバイザー - 雑多な質問 Break even point code... milvex 2010.05.02 16:49 #2324 棒グラフの履歴の制限 このRenkoLiveChart_v3.2スクリプトにbars limitオプションを追加していただけると幸いです。 このスクリプトはコンピュータのリソースを 多く消費します。 ファイル: renkolivechart_v3.2.mq4 14 kb username1 2010.05.03 06:02 #2325 基本的な注意喚起のEA ........................................................................................................ scottyb 2010.05.04 12:30 #2326 ノイズ除去 トレードのノイズを制限し、より速くカットオフする方法を探していました。 このアイデアは非常にシンプルです。 ノイズはこの写真にあるように、市場の状況に合わせて変化し続けるという意味でのダイナミックなものです。 ここに私が作ったクローズ用のコードがあります。もし誰かがこれを使いたいなら、自由に使ってください。 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 削除済み 2010.05.07 11:41 #2327 どなたか教えてください。 3つの指標をベースにした新しい指標を作る方法を教えてください。3つの指標をベースに戦略を立てている のですが、1つの指標を作りたいのですが。 Uchefred 2010.05.08 04:13 #2328 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インジケータの売りは上、買いは下)で全トレードに対応。 以上、よろしくお願いします。 ファイル: trendlord.ex4 4 kb fisher_m11.ex4 5 kb tcf_smoothed_-_t3.ex4 7 kb supertrend.ex4 4 kb smallsharp2.ex4 10 kb How to code? [Archive!] Pure mathematics, physics, [アーカイブ!】純粋数学、物理学、化学など:トレードとは一切関係ない脳トレ問題集 luxinterior 2010.05.15 20:47 #2329 1行のコードで全く同じことが実現できたはずです。 GlobalVariableSet("TRENDSET_"+Symbol()); また、時間軸を追加することで、さらにユニークなものにすることができます。 正直なところ、あなたの投稿のポイントはよくわかりません。 ではまた。 ラックス kikoolol 2010.05.18 10:08 #2330 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 How to code? MQL4コースへようこそ コーディングのヘルプ 1...226227228229230231232233234235236237238239240...347 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
皆さん、こんにちは。
チャートの時間から通貨の強弱を表示する通貨の強弱メーターの改造に取り組んでいます。 現在、使用しているコードです。
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);
ありがとう! 君たちは最高だ!
私はかなりそれが動作していると思うが(よく分からない?)、何らかの理由で配列は正当な値と一緒に多くの '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
........................................................................................................
ノイズ除去
トレードのノイズを制限し、より速くカットオフする方法を探していました。
このアイデアは非常にシンプルです。![](https://c.mql5.com/forextsd/forum/71/cutoff.jpg)
ノイズはこの写真にあるように、市場の状況に合わせて変化し続けるという意味でのダイナミックなものです。
ここに私が作ったクローズ用のコードがあります。もし誰かがこれを使いたいなら、自由に使ってください。
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 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が==なので、私はちょうど何をすべきかわからない 私のコードで問題を見ることができません。
どなたか教えてください。
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_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のインジケータを添付しましたので、試してみてください。
もし誰かがゼロからそれを再コード化する準備ができているならば、躊躇しないでください。
私をイライラさせる....