コーディングの方法は? - ページ 118 1...111112113114115116117118119120121122123124125...347 新しいコメント 削除済み 2008.08.20 14:29 #1171 CEHansenのために こんにちは。 その中で、バーを一本ずつ取っていくところでは、Currentの代わりにi変数を随所で使う必要があります。Currentは初期化されていないので、0です。 一番わかりやすいのは、冒頭のforの中にこう書くことです。 Current = i; 矢印が表示されます。また、Sto_Lookbackの値を大きくすることを忘れないでください。100,1000とか、そんな感じです。 P.S このようにforを使うのが、私の見解ではより良いと思います。 for (int i = Sto_Lookback; i >0; i--){。 ... } これは "バー "の通常の方法であるため、0は最後の1つである。これは、後でいくつかの他のトラブルからあなたを保存します。(例えば、再描画など)。単なる思いつきです。 ありがとうございました。 ビクター [Excluído] 2008.08.20 15:23 #1172 BigBe 2008.08.21 05:47 #1173 Klinger Volume Oscillator(クリンガー・ボリューム・オシレーター これは面白そうなインジケータですね。 しかし、それは部分的にボリュームに依存している、それは実際には外国為替で使用できません。 ビッグベ 削除済み 2008.08.21 20:34 #1174 オーダーモディファイエラー 1 私のバックテストでは、時々「OrderModify error1」が発生します。つまり、OrderModify()の引数は、変更された注文の対応するパラメータと同じであることを意味します。 これは、二重比較の問題が原因かもしれません。 問題は、どのようにこの問題を解決することができるでしょうか? 以下は、私が問題を引き起こしていると考えている部分です。 if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))){ OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen); if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy").If(EachTickMode):シグナルを送信します。 if (!EachTickMode) BarCount = Bars; IsTrade = False; を続けます。 } //MoveOnce(ムーブワンス if(MoveStopOnce && MoveStopWhenPrice > 0) { //MoveStopOnceの場合 if(ビッド - 注文開始価格() >= ポイント * MoveStopWhenPrice) { { if(OrderStopLoss()未満OrderOpenPrice() + Point * MoveStopTo ) { {。 OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + Point * MoveStopTo, OrderTakeProfit(), 0, Red); if (!EachTickMode) BarCount = Bars; を続けます。 } } } //トレーリングストップ if(UseTrailingStop && TrailingStop > 0) { if(ビッド-オーダーオープン価格() > ポイント * TrailingStop) { { if(OrderStopLoss() < ビッド - ポイント * トレイリングストップ) { { { OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen)を実行します。 if (!EachTickMode) BarCount = Bars; を続けます。 } } } } else { //Close //+------------------------------------------------------------------+ //| シグナル開始(売り終了) //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| シグナル終了(売り終了) //+------------------------------------------------------------------+ if (オーダー == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))){ OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange); if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell").If(EachTickMode):シグナルを送信します。 if (!EachTickMode) BarCount = Bars; IsTrade = False; を続けます。 } //MoveOnce(ムーブワンス if(MoveStopOnce && MoveStopWhenPrice > 0) { { //OrderOpenPrice()・Ask >= Point * MoveStopWhenPrice > 0 if(注文開始価格() - アスク >= ポイント * MoveStopWhenPrice) { { {? if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo) { (オーダーストップ・ロス() > オーダーオープン・プライス() - ポイント * ムーブストップ・トゥ) OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red); if (!EachTickMode) BarCount = Bars; を続けます。 } } } //トレーリングストップ if(UseTrailingStop && TrailingStop > 0) { { (注文開始価格 - アスク) > (ポイント * TrailingStop) if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) { { { if((OrderStopLoss() > (Ask + Point * TrailingStop))|| (OrderStopLoss() == 0)) { { OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange)を実行します。 if (!EachTickMode) BarCount = Bars; を続けます。 } } } } } } アスク! コーディングのヘルプ コーディングヘルプ...アラートの代わりにインジケータをフィルタリングする方法を教えてください。 matrixebiz 2008.08.22 00:47 #1175 コードに関する質問 i++やi--はコーディングにおいてどのような意味を持つのでしょうか? 例:for (int i=5; i>0;i--) hiachiever 2008.08.22 01:16 #1176 matrixebiz: i++やi--はコーディングではどういう意味ですか? 例: for (int i=5; i>0;i--) これは、C言語ベースの言語では、数値ベースの変数をインクリメントまたはデクリメントするためのショートハンドです。 例えば、Visual Basicでは、次のように書くことになる。 i = i + 1 と書くと、i変数が増加します。 しかし、C言語では、単にi++と書くことができます。 と書くだけです。 ハイエナ matrixebiz 2008.08.22 01:53 #1177 hiachiever: これは、C言語ベースの言語では、数値ベースの変数をインクリメントまたはデクリメントするためのショートハンドです。 例えばVisual Basicの場合、次のように書く必要がある。i = i + 1 と書くと、i 変数がインクリメントされます。しかし、C言語では、単にi++と書くことができます。以上、よろしくお願いします。 ハイエナ ありがとうございます。 ということは、if (int i=6; i>0; i++) と書くと、「ループ」することになります。 と書くと、「ループ」して、最大6まで値をチェックし 続けるのでしょうか? それが正しいかどうかはわかりません。もし、i--を使ったらどうなるのでしょうか?ということです。 hiachiever 2008.08.22 02:00 #1178 matrixebiz: ありがとうございます。ということで、if (int i=6; i>0; i++) とすれば。 この場合、「ループ」つまり、最大6まで値をチェックし続けるのでしょうか? 正しいかどうかはわかりません。i-を使用するとどうなるのでしょうか?ということです。 マトリックスビズ 6 から始めて 0 に戻るなら、i-- を使う。 (int i=6; i>0; i--) とします。 これは 6 から始まり、I > 0 の間、ループごとに 1 ずつ減少します。 もし、0を含むなら、i>=0を使用してください。 ではまた。 ハイキュー matrixebiz 2008.08.22 04:23 #1179 hiachiever: Matrixebizです。6から始めて0に戻したい場合は、i--を使います。 (int i=6; i>0; i--) これは 6 で始まり、I > 0 の間、ループごとに 1 ずつ減少します。 もし、0を含むなら、i>=0を使用してください。 乾杯。 ハイチュウ OK、ではもし私がif (int i=6; i>0; i++) とすると、6から始まり、1、2、3...と6ずつ増えていくのですね? hiachiever 2008.08.22 04:55 #1180 matrixebiz: OK、では、もし私が if (int i=6; i>0; i++) と書いたら、それは6から始まり、1、2、3・・・と6ずつ増分していくのですね? 6で終了させたいのであれば、全く問題ありません。 この場合、コードは次のようになります。 For (int i=1; i<=6; i++) これは、1から始まり、6で終わり、各ループで1ずつ増加します。 では、よろしくお願いします。 ハイヒール 1...111112113114115116117118119120121122123124125...347 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
CEHansenのために
こんにちは。
その中で、バーを一本ずつ取っていくところでは、Currentの代わりにi変数を随所で使う必要があります。Currentは初期化されていないので、0です。
一番わかりやすいのは、冒頭のforの中にこう書くことです。
Current = i;
矢印が表示されます。また、Sto_Lookbackの値を大きくすることを忘れないでください。100,1000とか、そんな感じです。
P.S このようにforを使うのが、私の見解ではより良いと思います。
for (int i = Sto_Lookback; i >0; i--){。
...
}
これは "バー "の通常の方法であるため、0は最後の1つである。これは、後でいくつかの他のトラブルからあなたを保存します。(例えば、再描画など)。単なる思いつきです。
ありがとうございました。
ビクター
Klinger Volume Oscillator(クリンガー・ボリューム・オシレーター
これは面白そうなインジケータですね。
しかし、それは部分的にボリュームに依存している、それは実際には外国為替で使用できません。
ビッグベ
オーダーモディファイエラー 1
私のバックテストでは、時々「OrderModify error1」が発生します。つまり、OrderModify()の引数は、変更された注文の対応するパラメータと同じであることを意味します。
これは、二重比較の問題が原因かもしれません。
問題は、どのようにこの問題を解決することができるでしょうか?
以下は、私が問題を引き起こしていると考えている部分です。
if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))){
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy").If(EachTickMode):シグナルを送信します。
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
を続けます。
}
//MoveOnce(ムーブワンス
if(MoveStopOnce && MoveStopWhenPrice > 0) { //MoveStopOnceの場合
if(ビッド - 注文開始価格() >= ポイント * MoveStopWhenPrice) { {
if(OrderStopLoss()未満OrderOpenPrice() + Point * MoveStopTo ) { {。
OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + Point * MoveStopTo, OrderTakeProfit(), 0, Red);
if (!EachTickMode) BarCount = Bars;
を続けます。
}
}
}
//トレーリングストップ
if(UseTrailingStop && TrailingStop > 0) {
if(ビッド-オーダーオープン価格() > ポイント * TrailingStop) { {
if(OrderStopLoss() < ビッド - ポイント * トレイリングストップ) { { {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen)を実行します。
if (!EachTickMode) BarCount = Bars;
を続けます。
}
}
}
} else {
//Close
//+------------------------------------------------------------------+
//| シグナル開始(売り終了)
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| シグナル終了(売り終了)
//+------------------------------------------------------------------+
if (オーダー == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))){
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell").If(EachTickMode):シグナルを送信します。
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
を続けます。
}
//MoveOnce(ムーブワンス
if(MoveStopOnce && MoveStopWhenPrice > 0) { { //OrderOpenPrice()・Ask >= Point * MoveStopWhenPrice > 0
if(注文開始価格() - アスク >= ポイント * MoveStopWhenPrice) { { {?
if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo) { (オーダーストップ・ロス() > オーダーオープン・プライス() - ポイント * ムーブストップ・トゥ)
OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red);
if (!EachTickMode) BarCount = Bars;
を続けます。
}
}
}
//トレーリングストップ
if(UseTrailingStop && TrailingStop > 0) { { (注文開始価格 - アスク) > (ポイント * TrailingStop)
if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) { { {
if((OrderStopLoss() > (Ask + Point * TrailingStop))|| (OrderStopLoss() == 0)) { {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange)を実行します。
if (!EachTickMode) BarCount = Bars;
を続けます。
}
}
}
}
}
}
コードに関する質問
i++やi--はコーディングにおいてどのような意味を持つのでしょうか?
例:for (int i=5; i>0;i--)
i++やi--はコーディングではどういう意味ですか? 例: for (int i=5; i>0;i--)
これは、C言語ベースの言語では、数値ベースの変数をインクリメントまたはデクリメントするためのショートハンドです。
例えば、Visual Basicでは、次のように書くことになる。
i = i + 1 と書くと、i変数が増加します。
しかし、C言語では、単にi++と書くことができます。
と書くだけです。
ハイエナ
これは、C言語ベースの言語では、数値ベースの変数をインクリメントまたはデクリメントするためのショートハンドです。
例えばVisual Basicの場合、次のように書く必要がある。
i = i + 1 と書くと、i 変数がインクリメントされます。
しかし、C言語では、単にi++と書くことができます。
以上、よろしくお願いします。
ハイエナありがとうございます。
ということは、if (int i=6; i>0; i++) と書くと、「ループ」することになります。
と書くと、「ループ」して、最大6まで値をチェックし 続けるのでしょうか? それが正しいかどうかはわかりません。もし、i--を使ったらどうなるのでしょうか?ということです。
ありがとうございます。
ということで、if (int i=6; i>0; i++) とすれば。
この場合、「ループ」つまり、最大6まで値をチェックし続けるのでしょうか? 正しいかどうかはわかりません。i-を使用するとどうなるのでしょうか?ということです。マトリックスビズ
6 から始めて 0 に戻るなら、i-- を使う。
(int i=6; i>0; i--) とします。
これは 6 から始まり、I > 0 の間、ループごとに 1 ずつ減少します。
もし、0を含むなら、i>=0を使用してください。
ではまた。
ハイキュー
Matrixebizです。
6から始めて0に戻したい場合は、i--を使います。
(int i=6; i>0; i--)
これは 6 で始まり、I > 0 の間、ループごとに 1 ずつ減少します。
もし、0を含むなら、i>=0を使用してください。
乾杯。
ハイチュウOK、ではもし私がif (int i=6; i>0; i++)
とすると、6から始まり、1、2、3...と6ずつ増えていくのですね?
OK、では、もし私が if (int i=6; i>0; i++) と書いたら、それは6から始まり、1、2、3・・・と6ずつ増分していくのですね?
6で終了させたいのであれば、全く問題ありません。
この場合、コードは次のようになります。
For (int i=1; i<=6; i++)
これは、1から始まり、6で終わり、各ループで1ずつ増加します。
では、よろしくお願いします。
ハイヒール