コーディングの方法は? - ページ 119 1...112113114115116117118119120121122123124125126...347 新しいコメント matrixebiz 2008.08.22 03:06 #1181 これが間違っているのかどうか、考えています。 for (int i=qqea_alert_x_candles_ago; i>0; i--) { // int i = 1; qqea_up = iCustom(NULL,0, "QQE Alert v3",0,i); qqea_down = iCustom(NULL,0, "QQE Alert v3",1,i); if (qqea_up < qqea_down) {。 if (i == 1) qqeacross = True; qqea_long = True。 qqea_short = False。 } else if (qqea_up > qqea_down) {。 if (i == 1) qqeacross = True; qqea_long = False。 qqea_short = True。 } } } qqea_alert_x_candles_ago "バーまで有効な信号をチェック する必要がありますが、それは(i = 1)があり、i = 1は一度だけ起こるのですか? hiachiever 2008.08.22 07:24 #1182 matrixebiz: これが間違っているかどうか考えています。for (int i=qqea_alert_x_candles_ago; i>0; i--) { // int i = 1; qqea_up = iCustom(NULL,0, "QQE Alert v3",0,i); qqea_down = iCustom(NULL,0, "QQE Alert v3",1,i); qqea_down = iCustom(NULL,0, "QQE Alert v3",1,i); Print("qqea_up: ", qqea_up, "qqea_down: ", qqea_down); if (qqea_up < qqea_down) {。 if (i == 1) qqeacross = True; qqea_long = True。 qqea_short = False。 } else if (qqea_up > qqea_down) {。 if (i == 1) qqeacross = True; qqea_long = False。 qqea_short = True。 } } } それは戻って "qqea_alert_x_candles_ago "バーまで有効な信号のためにチェックする必要がありますが、それは(i = 1)持っているi = 1のみ一度に発生するのですか? qqea_alert_x_candles_ago" > 0と仮定すると、あなたのコードの額面通りは大丈夫のように見えます。 これが動作しない場合、あなたの問題はiCustomとの関係である可能性が高いです。 この関数が 正しく動作するためには、実際のインジケータの入力要素ごとに、入力要素を渡す必要があります。もし、これを行わなかったり、間違ったデータ型を渡したりすると、icustomは何も返しません。 上記のコードにPrintステートメントを追加しました。これを使用して、iCustomから返された値が実際に何かを含んでいるかどうかを判断してください。 では、また。 Hiachiever PussyGalore 2008.08.22 08:30 #1183 バーをカウントするコードで助けを必要とする 私のEAには、オープンポジションのストップロスを計算するためのオプションがいくつかあります。 そのうちの1つは、過去「x」本数の価格バーの安値を使用することです。 現在、ロングポジションでこのオプションのストップロス(SL)を計算するためにEA内で使用されているコードの行は次のとおりです。 SL=iLow(Symbol(),Period(),iLowest(Symbol(),Period(),MODE_LOW,StopLossBars,0)); StopLossBarsは外部入力変数です。 問題は、ポジションを開いてからバーがカウントされるたびに、ストップロスの他の条件がこの条件を上回るまで、StopLossBarsの値が増加するようにしたいことです。 次のようなコード行を推測します。 StopLossBars = StopLossBars + BarsCountedSincePositionOpened のようなコードでうまくいくと思います。 残念ながら、私のコーディングはカットアンドペーストに限られており、BarsCountedSincePositionOpenedの計算やコーディングの仕方が分かりません。 どなたか教えていただけませんか? matrixebiz 2008.08.22 10:21 #1184 hiachiever: qqea_alert_x_candles_ago">0と仮定すると、あなたのコードは額面通りです。この関数が動作しない場合、あなたの問題はiCustomに関連している可能性が高いです。 この関数が正しく動作するためには、実際のインジケータの各入力要素に対して入力要素を渡す必要があります。もし、これを行わなかったり、間違ったデータ型を渡したりすると、icustomは何も返しません。 上記のコードにPrintステートメントを追加しました。これを使用して、iCustomから返された値が実際に何かを含んでいるかどうかを判断してください。 お疲れ様でした。 ハイエナ このコードは他のEAのものですが、ループが "qqea_alert_x_candles_ago" > 1 になったとき、このステートメント "if (i == 1) qqeacross = True;" は今はFalseになるのですよね?i>qqea_alert_x_candles_agoまでTrueのままであるべきなのに。 RogerioMolinario 2008.08.22 14:55 #1185 お役立ち情報 皆さんへ このコーディングは同僚から教えてもらったものです。このコードは、SMAの上下のエントリーを知らせる非常に良いインジケータになるはずだと言われました。どなたか、このコーディングでインジケータを作るのを手伝っていただけませんか? /*[[ 名前 := SMA Up and Down セパレートウインドウ := no 最初の色 := 青 最初の描画タイプ:= 線 第二データ使用 := はい 第二の色 := 赤 第2描画タイプ := 線 ]]*/ 入力 : MAPeriod(10), Bandwide_UP(20),Bandwide_DOWN(20); 変数 : shift(0), cnt(0), sum(0), loopbegin1(0), loopbegin2(0), first(True), prevbars(0); 変数 :MA(0); SetLoopCount(0); // 初期チェック MAPeriod < 1 ならば Exit; // 追加のバーをロードするか、トータルリロードをチェックする If Bars 1 Then first = True; prevbars = Bars; // loopbegin1とloopbegin2がカウントされたバーのカウンターを防ぐ 現在のバーを除く If first Then Begin loopbegin1 = Bars-MAPeriod-1; If loopbegin1 < 0 Then Exit; // カウントするためのバーが足りない loopbegin2 = Bars-MAPeriod-1; If loopbegin2 < 0 Then Exit; // カウントするのに十分なバーがありません。 first = False; // このブロックは一度だけ評価されます。 終了 // 収束-発散 loopbegin1 = loopbegin1+1; // 現在のバーも再計数されます。 For shift = loopbegin1 Downto 0 Begin MA = iMA(MAPeriod,MODE_SMA,shift); SetIndexValue(shift,(MA+Bandwide_UP*point)); SetIndexValue2(shift,(MA+Bandwide_UP*point)); SetIndexValue2(shift,(MA-Bandwide_DOWN*point)); SetIndexValue2(shift,(MA-Bandwide_DOWN*point)); loopbegin1 = loopbegin1-1; // 前のバーへの再カウントを防止する。 終了です。 よろしくお願いします。 ロジェリオ How to code? リニア・レグレッション・インディケーター 生のアイデア denis68 2008.08.22 21:49 #1186 コードのヘルプが必要です 私は次のコードのヘルプが必要です現時点では、ACがゼロ以上または以下の場合にのみ注文を開き、私はそれが赤が緑に変更され、ビザを開くようにしたいです。 ダブルAC1 = iAC(NULL, 0, Current + 0); double AC2 = iAC(NULL, 0, 現在値 + 1); if ((AC1 < AC2))オーダー = SIGNAL_CLOSEBUY; hiachiever 2008.08.22 21:57 #1187 matrixebiz: このコードは他のEAのものですが、ループが「qqea_alert_x_candles_ago」>1になったとき、この「if (i == 1) qqeacross = True;」というステートメントは、今はFalseになると思っていたのですが、違いますか?i>qqea_alert_x_candles_agoまでTrueのままであるべきなのに。 いいえ、それは正しくありません。 つまり、forループの最後のループで、「if (i == 1) qqeacross = True;」というチェックが 行われるのです。最終的には、qqeacrossが発生した場合、出力はtrueになります。 唯一の問題は、以前のループでqqeacrossがtrueに設定されていた場合である。これを解決するには、forループの前にqqeacross = false;を設定する必要がある。こうすることで、もしqqeacross = trueが、直前に終了したループによって設定されたことを確認することができます。 乾杯。 hiachiever hiachiever 2008.08.22 22:09 #1188 Pussy Galore: 私のEAには、オープンポジションのストップロスを計算するためのいくつかのオプションがあります。そのうちの1つは、過去「x」本数の価格バーの安値を使用するものです。 このオプションのロングポジションのストップロス(SL)を計算するためにEA内で現在使われているコードラインは以下の通りです。SL=iLow(Symbol(),Period(),iLowest(Symbol(),Period(),MODE_LOW,StopLossBars,0)) です。StopLossBarsは外部入力変数です。問題は、ポジションを開いてからバーがカウントされるたびに、ストップロスの他の条件がこの条件を上回るまで、StopLossBarsの値が増加するようにしたいことです。次のようなコード行を推測します。StopLossBars = StopLossBars + BarsCountedSincePositionOpenedのようなコードでうまくいくと思います。残念ながら、私のコーディングはカットアンドペーストに限られており、BarsCountedSincePositionOpenedの計算やコーディングの仕方が分かりません。 どなたか方法を教えてください。 これを行う方法は、グローバルスコープ(つまりinitの前)で変数を作成することです。 例えば int BarCount; int init () そして、ストップロスの コードで以下を使用します。 if (BarCount<Bars) { SL=iLow(Symbol(),Period(),iLowest(Symbol(),Period(),MODE_LOW,StopLossBars,0))。 StopLossBars++; BarCount=Bars; } これは、新しいバーごとにStopLossBarsを1ずつ増加させます。 コードへの唯一の追加事項は、新しい取引が開始されたときに「StopLossBars」を元のデフォルト値にリセットすることです。 乾杯 Hiachiever matrixebiz 2008.08.22 22:21 #1189 denis68: 私は次のコードで助けを必要とする現時点ではACがゼロ以上または以下の場合にのみ注文を開き、私はそれが赤が緑に変更された場合に開き、その逆をしたい。 double AC1 = iAC(NULL, 0, Current + 0);double AC2 = iAC(NULL, 0, Current + 1); if ((AC1 < AC2))オーダー = SIGNAL_CLOSEBUY; この2行を削除することで、インジケータコードの他の2つのバッファを開いたり、表示したりすることができます。 // SetIndexLabel(1,NULL)。 // SetIndexLabel(2,NULL)。 そして、私の修正したACでiCustomを呼び 出す。 double ac1 = iCustom(NULL, 0, "AcceleratorMod", 1, 1); double ac2 = iCustom(NULL, 0, "AcceleratorMod", 2, 1); double ac11 = iCustom(NULL, 0, "AcceleratorMod", 1, 2); double ac22 = iCustom(NULL, 0, "AcceleratorMod", 2, 2)。 bool acbuy = ac2==0 && ac11==0; // 赤から緑に変わる。 bool acsell = ac1==0 && ac22==0; // 緑から赤に変更されます。 それが役立つことを願っています denis68 2008.08.23 09:52 #1190 matrixebiz この2行を削除するとはどういう意味でしょうか。 1...112113114115116117118119120121122123124125126...347 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
これが間違っているのかどうか、考えています。
for (int i=qqea_alert_x_candles_ago; i>0; i--) {
// int i = 1;
qqea_up = iCustom(NULL,0, "QQE Alert v3",0,i);
qqea_down = iCustom(NULL,0, "QQE Alert v3",1,i);
if (qqea_up < qqea_down) {。
if (i == 1) qqeacross = True;
qqea_long = True。
qqea_short = False。
} else if (qqea_up > qqea_down) {。
if (i == 1) qqeacross = True;
qqea_long = False。
qqea_short = True。
}
}
}
qqea_alert_x_candles_ago "バーまで有効な信号をチェック する必要がありますが、それは(i = 1)があり、i = 1は一度だけ起こるのですか?
これが間違っているかどうか考えています。
for (int i=qqea_alert_x_candles_ago; i>0; i--) {
// int i = 1;
qqea_up = iCustom(NULL,0, "QQE Alert v3",0,i);
qqea_down = iCustom(NULL,0, "QQE Alert v3",1,i); qqea_down = iCustom(NULL,0, "QQE Alert v3",1,i);
Print("qqea_up: ", qqea_up, "qqea_down: ", qqea_down);
if (qqea_up < qqea_down) {。
if (i == 1) qqeacross = True;
qqea_long = True。
qqea_short = False。
} else if (qqea_up > qqea_down) {。
if (i == 1) qqeacross = True;
qqea_long = False。
qqea_short = True。
}
}
}
それは戻って "qqea_alert_x_candles_ago "バーまで有効な信号のためにチェックする必要がありますが、それは(i = 1)持っているi = 1のみ一度に発生するのですか?qqea_alert_x_candles_ago" > 0と仮定すると、あなたのコードの額面通りは大丈夫のように見えます。
これが動作しない場合、あなたの問題はiCustomとの関係である可能性が高いです。
この関数が 正しく動作するためには、実際のインジケータの入力要素ごとに、入力要素を渡す必要があります。もし、これを行わなかったり、間違ったデータ型を渡したりすると、icustomは何も返しません。
上記のコードにPrintステートメントを追加しました。これを使用して、iCustomから返された値が実際に何かを含んでいるかどうかを判断してください。
では、また。
Hiachiever
バーをカウントするコードで助けを必要とする
私のEAには、オープンポジションのストップロスを計算するためのオプションがいくつかあります。 そのうちの1つは、過去「x」本数の価格バーの安値を使用することです。
現在、ロングポジションでこのオプションのストップロス(SL)を計算するためにEA内で使用されているコードの行は次のとおりです。
SL=iLow(Symbol(),Period(),iLowest(Symbol(),Period(),MODE_LOW,StopLossBars,0));
StopLossBarsは外部入力変数です。
問題は、ポジションを開いてからバーがカウントされるたびに、ストップロスの他の条件がこの条件を上回るまで、StopLossBarsの値が増加するようにしたいことです。 次のようなコード行を推測します。
StopLossBars = StopLossBars + BarsCountedSincePositionOpened
のようなコードでうまくいくと思います。 残念ながら、私のコーディングはカットアンドペーストに限られており、BarsCountedSincePositionOpenedの計算やコーディングの仕方が分かりません。
どなたか教えていただけませんか?
qqea_alert_x_candles_ago">0と仮定すると、あなたのコードは額面通りです。
この関数が動作しない場合、あなたの問題はiCustomに関連している可能性が高いです。
この関数が正しく動作するためには、実際のインジケータの各入力要素に対して入力要素を渡す必要があります。もし、これを行わなかったり、間違ったデータ型を渡したりすると、icustomは何も返しません。
上記のコードにPrintステートメントを追加しました。これを使用して、iCustomから返された値が実際に何かを含んでいるかどうかを判断してください。
お疲れ様でした。
ハイエナこのコードは他のEAのものですが、ループが "qqea_alert_x_candles_ago" > 1 になったとき、このステートメント "if (i == 1) qqeacross = True;" は今はFalseになるのですよね?i>qqea_alert_x_candles_agoまでTrueのままであるべきなのに。
お役立ち情報
皆さんへ
このコーディングは同僚から教えてもらったものです。このコードは、SMAの上下のエントリーを知らせる非常に良いインジケータになるはずだと言われました。どなたか、このコーディングでインジケータを作るのを手伝っていただけませんか?
/*[[
名前 := SMA Up and Down
セパレートウインドウ := no
最初の色 := 青
最初の描画タイプ:= 線
第二データ使用 := はい
第二の色 := 赤
第2描画タイプ := 線
]]*/
入力 : MAPeriod(10), Bandwide_UP(20),Bandwide_DOWN(20);
変数 : shift(0), cnt(0), sum(0), loopbegin1(0), loopbegin2(0), first(True), prevbars(0);
変数 :MA(0);
SetLoopCount(0);
// 初期チェック
MAPeriod < 1 ならば Exit;
// 追加のバーをロードするか、トータルリロードをチェックする
If Bars 1 Then first = True;
prevbars = Bars;
// loopbegin1とloopbegin2がカウントされたバーのカウンターを防ぐ 現在のバーを除く
If first Then Begin
loopbegin1 = Bars-MAPeriod-1;
If loopbegin1 < 0 Then Exit; // カウントするためのバーが足りない
loopbegin2 = Bars-MAPeriod-1;
If loopbegin2 < 0 Then Exit; // カウントするのに十分なバーがありません。
first = False; // このブロックは一度だけ評価されます。
終了
// 収束-発散
loopbegin1 = loopbegin1+1; // 現在のバーも再計数されます。
For shift = loopbegin1 Downto 0 Begin
MA = iMA(MAPeriod,MODE_SMA,shift);
SetIndexValue(shift,(MA+Bandwide_UP*point)); SetIndexValue2(shift,(MA+Bandwide_UP*point));
SetIndexValue2(shift,(MA-Bandwide_DOWN*point)); SetIndexValue2(shift,(MA-Bandwide_DOWN*point));
loopbegin1 = loopbegin1-1; // 前のバーへの再カウントを防止する。
終了です。
よろしくお願いします。
ロジェリオ
コードのヘルプが必要です
私は次のコードのヘルプが必要です現時点では、ACがゼロ以上または以下の場合にのみ注文を開き、私はそれが赤が緑に変更され、ビザを開くようにしたいです。
ダブルAC1 = iAC(NULL, 0, Current + 0);
double AC2 = iAC(NULL, 0, 現在値 + 1);
if ((AC1 < AC2))オーダー = SIGNAL_CLOSEBUY;
このコードは他のEAのものですが、ループが「qqea_alert_x_candles_ago」>1になったとき、この「if (i == 1) qqeacross = True;」というステートメントは、今はFalseになると思っていたのですが、違いますか?i>qqea_alert_x_candles_agoまでTrueのままであるべきなのに。
いいえ、それは正しくありません。
つまり、forループの最後のループで、「if (i == 1) qqeacross = True;」というチェックが 行われるのです。最終的には、qqeacrossが発生した場合、出力はtrueになります。
唯一の問題は、以前のループでqqeacrossがtrueに設定されていた場合である。これを解決するには、forループの前にqqeacross = false;を設定する必要がある。こうすることで、もしqqeacross = trueが、直前に終了したループによって設定されたことを確認することができます。
乾杯。
hiachiever
私のEAには、オープンポジションのストップロスを計算するためのいくつかのオプションがあります。そのうちの1つは、過去「x」本数の価格バーの安値を使用するものです。
このオプションのロングポジションのストップロス(SL)を計算するためにEA内で現在使われているコードラインは以下の通りです。
SL=iLow(Symbol(),Period(),iLowest(Symbol(),Period(),MODE_LOW,StopLossBars,0)) です。
StopLossBarsは外部入力変数です。
問題は、ポジションを開いてからバーがカウントされるたびに、ストップロスの他の条件がこの条件を上回るまで、StopLossBarsの値が増加するようにしたいことです。次のようなコード行を推測します。
StopLossBars = StopLossBars + BarsCountedSincePositionOpened
のようなコードでうまくいくと思います。残念ながら、私のコーディングはカットアンドペーストに限られており、BarsCountedSincePositionOpenedの計算やコーディングの仕方が分かりません。
どなたか方法を教えてください。これを行う方法は、グローバルスコープ(つまりinitの前)で変数を作成することです。
例えば
int BarCount;
int init ()
そして、ストップロスの コードで以下を使用します。
if (BarCount<Bars)
{
SL=iLow(Symbol(),Period(),iLowest(Symbol(),Period(),MODE_LOW,StopLossBars,0))。
StopLossBars++;
BarCount=Bars;
}
これは、新しいバーごとにStopLossBarsを1ずつ増加させます。
コードへの唯一の追加事項は、新しい取引が開始されたときに「StopLossBars」を元のデフォルト値にリセットすることです。
乾杯
Hiachiever
私は次のコードで助けを必要とする現時点ではACがゼロ以上または以下の場合にのみ注文を開き、私はそれが赤が緑に変更された場合に開き、その逆をしたい。
double AC1 = iAC(NULL, 0, Current + 0);
double AC2 = iAC(NULL, 0, Current + 1);
if ((AC1 < AC2))オーダー = SIGNAL_CLOSEBUY;この2行を削除することで、インジケータコードの他の2つのバッファを開いたり、表示したりすることができます。
// SetIndexLabel(1,NULL)。
// SetIndexLabel(2,NULL)。
そして、私の修正したACでiCustomを呼び 出す。
double ac1 = iCustom(NULL, 0, "AcceleratorMod", 1, 1);
double ac2 = iCustom(NULL, 0, "AcceleratorMod", 2, 1);
double ac11 = iCustom(NULL, 0, "AcceleratorMod", 1, 2);
double ac22 = iCustom(NULL, 0, "AcceleratorMod", 2, 2)。
bool acbuy = ac2==0 && ac11==0; // 赤から緑に変わる。
bool acsell = ac1==0 && ac22==0; // 緑から赤に変更されます。
それが役立つことを願っています
matrixebiz この2行を削除するとはどういう意味でしょうか。