どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 168 1...161162163164165166167168169170171172173174175...1178 新しいコメント Virtuon 2013.10.02 14:30 #1671 何が間違っているのか、教えてください。簡単なインジケータを作ろうとしています。 { int limit,i; double last; 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=limit; i>=0; i--) { double OptClose = Close[i]*10000; if (MathMod(OptClose,step1)==0) { Buffer0[i] = Close[i]; last = Close[i]; } else Buffer0[i] = last; } //---- return(0); } //+------------------------------------------------------------------+ チャートウィンドウでは動作するのですが、Expert Advisorでテストしようとすると、何でもいいから描画するか、「ステップなし」になってしまいます。 PapaYozh 2013.10.02 16:29 #1672 Virtuon: 何が間違っているのか、教えてください。簡単なインジケータを作ろうとしています。 チャートウィンドウでは動作するのですが、Expert Advisorでテストしようとすると、何でもいいから描画するか、「ステップなし」になってしまいます。 if (MathMod(OptClose,step1)==0) Buffer0[i] = Close[i]; else Buffer0[i] = Buffer0[i+1]; Virtuon 2013.10.02 16:44 #1673 PapaYozh: 試してみました。窓の中だけでも、こうはいかない。どうやら、ここには何らかの仕掛けがあるようだ。今はこの方法で動作していますが、恐ろしく遅いです。 for(i=WindowBarsPerChart(); i>=0; i--) { double OptClose = Close[i]*10000; if (MathMod(i+step1,step1)==0) { Buffer0[i] = Close[i]; last = Close[i]; } else Buffer0[i] = last; Comment(Buffer0[WindowBarsPerChart()]," ",Buffer0[0]); } 最後のバーの再計算チェックを無効にした状態です。 Mepkypuu 2013.10.02 18:18 #1674 MQL4プログラミングの達人たちよ、こんにちは。どうすれば可能なのか、アドバイスをお願いします。 プログラムコードの一部。 LogAdd("Начинаю вычисления переменных для текущего тика ... "); for (int i = OrdersTotal()-1; i >= 0; i--) { OrderSelect(i, SELECT_BY_POS); LogAdd("Выбираю ордер с тикетом: " + i); if ((OrderOpenTime() > opnTime) && (OrderType() == OP_BUY) || (OrderType() == OP_SELL)) { opnTime = OrderOpenTime(); currentTicket = OrderTicket(); currentStopLoss = OrderStopLoss(); LogAdd("Ордер открыт позже предыдущего, не является отложенным. Записываю переменные: opnTime - " + opnTime + ", currentTicket - " + currentTicket + ", currentStopLoss - " + currentStopLoss + "."); } if (OrderType() == OP_BUY) { buyCntr ++; buyOpnPrice = OrderOpenPrice(); lotsSumBuy += OrderLots(); TrailingByShadows(OrderTicket(), Period(), 11, 0); LogAdd("Ордер не является отложенным, тип ордера - на покупку, обновляю переменные, пытаюсь трейлить: buyCntr - " + buyCntr + ", buyOpnPrice - " + buyOpnPrice + ", lotsSumBuy - " + lotsSumBuy + "."); } if (OrderType() == OP_SELL) { sellCntr ++; sellOpnPrice = OrderOpenPrice(); lotsSumSell += OrderLots(); TrailingByShadows(OrderTicket(), Period(), 11, 0); LogAdd("Ордер не является отложенным, тип ордера - на продажу, обновляю переменные, пытаюсь трейлить: sellCntr - " + sellCntr + ", sellOpnPrice - " + sellOpnPrice + ", lotsSumSell - " + lotsSumSell + "."); } if (OrderType() == OP_SELLSTOP) { sellOpnPrice = OrderOpenPrice(); LogAdd("Ордер является отложенным, тип ордера - на продажу, фиксирую цену открытия: sellOpnPrice - " + sellOpnPrice + "."); } if (OrderType() == OP_BUYSTOP) { buyOpnPrice = OrderOpenPrice(); LogAdd("Ордер является отложенным, тип ордера - на покупку, фиксирую цену открытия: buyOpnPrice - " + buyOpnPrice + "."); } } LogAdd("Вычисления переменных для текущего тика завершены."); このセクションのための丸太の一片。 2013.10.2 15:59:0 - Начинаю вычисления переменных для текущего тика ... 2013.10.2 15:59:0 - Выбираю ордер с тикетом: 5 2013.10.2 15:59:0 - Ордер является отложенным, тип ордера - на продажу, фиксирую цену открытия: sellOpnPrice - 1.35250000. 2013.10.2 15:59:0 - Выбираю ордер с тикетом: 4 2013.10.2 15:59:0 - Ордер открыт позже предыдущего, не является отложенным. Записываю переменные: opnTime - 1380728738, currentTicket - 93537240, currentStopLoss - 0.00000000. 2013.10.2 15:59:0 - Ордер не является отложенным, тип ордера - на покупку, обновляю переменные, пытаюсь трейлить: buyCntr - 1, buyOpnPrice - 1.35620000, lotsSumBuy - 0.06000000. 2013.10.2 15:59:0 - Ордер не является отложенным, тип ордера - на продажу, обновляю переменные, пытаюсь трейлить: sellCntr - 1, sellOpnPrice - 1.35250000, lotsSumSell - 0.01000000. 2013.10.2 15:59:0 - Выбираю ордер с тикетом: 3 2013.10.2 15:59:0 - Ордер не является отложенным, тип ордера - на продажу, обновляю переменные, пытаюсь трейлить: sellCntr - 2, sellOpnPrice - 1.35250000, lotsSumSell - 0.04000000. 2013.10.2 15:59:0 - Выбираю ордер с тикетом: 2 2013.10.2 15:59:0 - Ордер не является отложенным, тип ордера - на покупку, обновляю переменные, пытаюсь трейлить: buyCntr - 2, buyOpnPrice - 1.35620000, lotsSumBuy - 0.07000000. 2013.10.2 15:59:0 - Ордер не является отложенным, тип ордера - на продажу, обновляю переменные, пытаюсь трейлить: sellCntr - 3, sellOpnPrice - 1.35250000, lotsSumSell - 0.05000000. 2013.10.2 15:59:0 - Выбираю ордер с тикетом: 1 2013.10.2 15:59:0 - Ордер не является отложенным, тип ордера - на покупку, обновляю переменные, пытаюсь трейлить: buyCntr - 3, buyOpnPrice - 1.35620000, lotsSumBuy - 0.08000000. 2013.10.2 15:59:0 - Ордер не является отложенным, тип ордера - на продажу, обновляю переменные, пытаюсь трейлить: sellCntr - 4, sellOpnPrice - 1.35250000, lotsSumSell - 0.06000000. 2013.10.2 15:59:0 - Выбираю ордер с тикетом: 0 2013.10.2 15:59:0 - Ордер не является отложенным, тип ордера - на продажу, обновляю переменные, пытаюсь трейлить: sellCntr - 5, sellOpnPrice - 1.35250000, lotsSumSell - 0.07000000. 2013.10.2 15:59:0 - Вычисления переменных для текущего тика завершены. 問題は、同じ注文に対して、どのような条件が成立したかということだ。 if (OrderType() == OP_BUY) { ... } if (OrderType() == OP_SELL) { ... } 何かよくわからないけど、でも論理的に考えると、この順番の場合はこうだということがわかる。 OP_BUY == OP_SELL 基本的に私はこれが起こる理由を気にしない、重要なのはsellCntr + +とbuyCntr +は、特定のタイプのオープンオーダーのために一義的に実行されることです、私はそれを修正するのに役立ちます? Vladyslav Goshkov 2013.10.02 18:34 #1675 Mepkypuu: MQL4プログラミングの達人たちよ、こんにちは。どうすれば可能なのか、アドバイスをお願いします。 プログラムコードの一部。 このセクションのための丸太の一片。 問題は、同じ注文に対して、どのような 条件が成立したかということだ。 何か よくわからないけど、でも論理的に考えると、この順番の場合はこうだということがわかる。 基本的に私はこれが起こる理由を気にしない、重要なのはsellCntr + +とbuyCntr +は、特定のタイプのオープンオーダーのために一義的に実行されることです、私を修正するのに役立ちます? なぜ同じ順番だとわかるのですか?チケットは印刷しないんですね ;)...。私は確信しています: トラウリングのとき、注文のオーバーフローがあります;)- 誘発されたエラーはそこからです。 TrailingByShadows(OrderTicket(), Period(), 11, 0); ?????????????????????????????? Вы при трале разве ордера не перебираете ?????????? Mepkypuu 2013.10.02 18:53 #1676 VladislavVG: なぜ同じ順番だと言い切れるのでしょうか?チケットは印刷しないんですね ;)...。きっと: トロールすると、オーダーがオーバーサンプリングされる ;)- 誘発されたエラーはそこからです。 論理的には、すでに具体的にどのオーダーをトロールする必要があるのかが分かっているのに、なぜトロールでオーダーを調べていくのでしょうか?ブルートフォースはありません、以下がそのコードです。 void TrailingByShadows(int ticket,int tmfrm,int bars_n, int indent) { int i; double new_extremum; if ((bars_n<1) || (indent<0) || (ticket==0) || ((tmfrm!=1) && (tmfrm!=5) && (tmfrm!=15) && (tmfrm!=30) && (tmfrm!=60) && (tmfrm!=240) && (tmfrm!=1440) && (tmfrm!=10080) && (tmfrm!=43200)) || (!OrderSelect(ticket,SELECT_BY_TICKET))) { Print("Трейлинг функцией TrailingByShadows() невозможен из-за некорректности значений переданных ей аргументов."); return(0); } if (OrderType()==OP_BUY) { for(i = 1; i <= bars_n; i++) { if (i == 1) new_extremum = iLow(Symbol(), tmfrm, i); else if (new_extremum > iLow(Symbol(), tmfrm, i)) new_extremum = iLow(Symbol(), tmfrm, i); } if(((new_extremum - indent * Point) > OrderStopLoss() + 1.0 * Point) || (OrderStopLoss() == 0)) if((new_extremum - indent * Point) > OrderOpenPrice()) if(new_extremum - indent * Point < Bid - MarketInfo(Symbol(), MODE_STOPLEVEL) * Point) if(AcountProfitEx(new_extremum) > ProfitSize) OrderModify(ticket, OrderOpenPrice(), new_extremum - indent * Point, OrderTakeProfit(), OrderExpiration()); } if (OrderType() == OP_SELL) { for(i = 1; i <= bars_n; i++) { if (i == 1) new_extremum = iHigh(Symbol(), tmfrm, i); else if (new_extremum < iHigh(Symbol(), tmfrm, i)) new_extremum = iHigh(Symbol(), tmfrm, i); } if (((new_extremum + (indent + MarketInfo(Symbol(),MODE_SPREAD)) * Point) < OrderStopLoss() - 1.0 * Point) || (OrderStopLoss() == 0)) if ((new_extremum + (indent + MarketInfo(Symbol(),MODE_SPREAD)) * Point) < OrderOpenPrice()) if ((new_extremum + (indent + MarketInfo(Symbol(),MODE_SPREAD)) * Point > Ask + MarketInfo(Symbol(),MODE_STOPLEVEL) * Point)) if (AcountProfitEx(new_extremum) > ProfitSize) OrderModify(ticket, OrderOpenPrice(), new_extremum + (indent + MarketInfo(Symbol(), MODE_SPREAD)) * Point, OrderTakeProfit(), OrderExpiration()); } } 追記:ちなみに、この問題は実際の条件下でのみ発生し、つまりテスターでは再現されません。 Юсуфходжа 2013.10.02 22:32 #1677 プログラマーの皆様、パソコンを再度再起動した際、通常のチャートの代わりにターミナルを開くとグレーのウィンドウが表示され、オープンポジション、EA、インディケータが失われました。しかし、新しいチャートを開くとポジションは表示されますが、EAとインディケータがなく、再度インストールしなければならなかったのはなぜですか?これと何の関係があるんだ?また取り付けることになりました。 ありがとうございました。 Konstantin 2013.10.02 23:56 #1678 そんな問題が生じている。ストラテジーテスターは 一度しか使えません。より正確には、ビジュアライゼーションテストが一度発動され、次に「スタート」ボタンを押すと、「ビジュアライゼーション」チェックボックスはリセットされ、何も起きません(sort of doesn't happen)。これをどうすれば打ち破れるのか。 Vladyslav Goshkov 2013.10.03 02:31 #1679 Mepkypuu: 論理的には、すでに具体的にどのオーダーをトロールする必要があるのかが分かっているのに、なぜトロールでオーダーを調べていくのでしょうか?ブルートフォースはありません、コードはこちらです。 追記:ちなみに、この問題は実際の条件下でのみ発生し、つまりテスターでは再現されません。 このバリアントで動かしてみてください。 LogAdd("Начинаю вычисления переменных для текущего тика ... "); for (int i = OrdersTotal()-1; i >= 0; i--) { if(!OrderSelect(i, SELECT_BY_POS)) continue; int OrdType=OrderType() ; int OrdTckt = OrderTicket(); LogAdd("Выбираю ордер ( "+i+" ) с тикетом: " + OrdTckt); if ((OrderOpenTime() > opnTime) && (OrdType == OP_BUY) || (OrdType == OP_SELL)) { opnTime = OrderOpenTime(); currentTicket = OrderTicket(); currentStopLoss = OrderStopLoss(); LogAdd("Ордер открыт позже предыдущего, не является отложенным. Записываю переменные: opnTime - " + opnTime + ", currentTicket - " + currentTicket + ", currentStopLoss - " + currentStopLoss + "."); } if (OrdType == OP_BUY) { buyCntr ++; buyOpnPrice = OrderOpenPrice(); lotsSumBuy += OrderLots(); TrailingByShadows(OrderTicket(), Period(), 11, 0); LogAdd("Ордер "+OrdTckt <-> OrderTicket()+" не является отложенным, тип ордера - на покупку, обновляю переменные, пытаюсь трейлить: buyCntr - " + buyCntr + ", buyOpnPrice - " + buyOpnPrice + ", lotsSumBuy - " + lotsSumBuy + "."); } if (OrdType== OP_SELL) { sellCntr ++; sellOpnPrice = OrderOpenPrice(); lotsSumSell += OrderLots(); TrailingByShadows(OrderTicket(), Period(), 11, 0); LogAdd("Ордер "+OrdTckt <-> OrderTicket()+" не является отложенным, тип ордера - на продажу, обновляю переменные, пытаюсь трейлить: sellCntr - " + sellCntr + ", sellOpnPrice - " + sellOpnPrice + ", lotsSumSell - " + lotsSumSell + "."); } if (OrderType() == OP_SELLSTOP) { sellOpnPrice = OrderOpenPrice(); LogAdd("Ордер "+OrdTckt <-> OrderTicket()+" является отложенным, тип ордера - на продажу, фиксирую цену открытия: sellOpnPrice - " + sellOpnPrice + "."); } if (OrderType() == OP_BUYSTOP) { buyOpnPrice = OrderOpenPrice(); LogAdd("Ордер "+OrdTckt <-> OrderTicket()+" является отложенным, тип ордера - на покупку, фиксирую цену открытия: buyOpnPrice - " + buyOpnPrice + "."); } } LogAdd("Вычисления переменных для текущего тика завершены."); ログをご覧ください。 gyfto 2013.10.03 03:31 #1680 テンプレートではなく、プログラムでインデントを設定することは可能でしょうか?でインデントサイズを取得できます。 WindowBarsPerChart() - WindowFirstVisibleBar() - 2;できるのですが、それをどのように露出させるか。追加テンプレートでプログラム的にできるようです。インジケータでテンプレートを作成し、_lread kernel32.dllで shift_size値を読み込み、 _lwriteで10から50までの数をそこに書き込み、そのような範囲は、このパラメータを受け入れることができるように、次にInternalMsgを介してテンプレートを読み込みます。しかし、それが33511なのか35511なのかはわからない。WinUser32.mqhでは、最初の選択肢ですが、フォーラムでは、2番目の選択肢になっています。その質問は、純子さん宛のものでなければならない。MT5では、CHART_SHIFT_SIZEは 、ChartSetString() と ChartGetString()によって、コード内のどの場所からでも利用可能です。MT4には他のオプションがあるのでは?バカな質問ですが...。 1...161162163164165166167168169170171172173174175...1178 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
何が間違っているのか、教えてください。簡単なインジケータを作ろうとしています。
チャートウィンドウでは動作するのですが、Expert Advisorでテストしようとすると、何でもいいから描画するか、「ステップなし」になってしまいます。
何が間違っているのか、教えてください。簡単なインジケータを作ろうとしています。
チャートウィンドウでは動作するのですが、Expert Advisorでテストしようとすると、何でもいいから描画するか、「ステップなし」になってしまいます。
試してみました。窓の中だけでも、こうはいかない。どうやら、ここには何らかの仕掛けがあるようだ。今はこの方法で動作していますが、恐ろしく遅いです。
最後のバーの再計算チェックを無効にした状態です。
MQL4プログラミングの達人たちよ、こんにちは。どうすれば可能なのか、アドバイスをお願いします。
プログラムコードの一部。
このセクションのための丸太の一片。
問題は、同じ注文に対して、どのような条件が成立したかということだ。何かよくわからないけど、でも論理的に考えると、この順番の場合はこうだということがわかる。
基本的に私はこれが起こる理由を気にしない、重要なのはsellCntr + +とbuyCntr +は、特定のタイプのオープンオーダーのために一義的に実行されることです、私はそれを修正するのに役立ちます?MQL4プログラミングの達人たちよ、こんにちは。どうすれば可能なのか、アドバイスをお願いします。
プログラムコードの一部。
このセクションのための丸太の一片。
問題は、同じ注文に対して、どのような 条件が成立したかということだ。何か よくわからないけど、でも論理的に考えると、この順番の場合はこうだということがわかる。
基本的に私はこれが起こる理由を気にしない、重要なのはsellCntr + +とbuyCntr +は、特定のタイプのオープンオーダーのために一義的に実行されることです、私を修正するのに役立ちます?TrailingByShadows(OrderTicket(), Period(), 11, 0); ?????????????????????????????? Вы при трале разве ордера не перебираете ??????????
なぜ同じ順番だと言い切れるのでしょうか?チケットは印刷しないんですね ;)...。きっと: トロールすると、オーダーがオーバーサンプリングされる ;)- 誘発されたエラーはそこからです。
論理的には、すでに具体的にどのオーダーをトロールする必要があるのかが分かっているのに、なぜトロールでオーダーを調べていくのでしょうか?ブルートフォースはありません、以下がそのコードです。
追記:ちなみに、この問題は実際の条件下でのみ発生し、つまりテスターでは再現されません。そんな問題が生じている。ストラテジーテスターは 一度しか使えません。より正確には、ビジュアライゼーションテストが一度発動され、次に「スタート」ボタンを押すと、「ビジュアライゼーション」チェックボックスはリセットされ、何も起きません(sort of doesn't happen)。これをどうすれば打ち破れるのか。
論理的には、すでに具体的にどのオーダーをトロールする必要があるのかが分かっているのに、なぜトロールでオーダーを調べていくのでしょうか?ブルートフォースはありません、コードはこちらです。
追記:ちなみに、この問題は実際の条件下でのみ発生し、つまりテスターでは再現されません。このバリアントで動かしてみてください。
ログをご覧ください。
WindowBarsPerChart() - WindowFirstVisibleBar() - 2;
できるのですが、それをどのように露出させるか。
追加
テンプレートでプログラム的にできるようです。インジケータでテンプレートを作成し、_lread kernel32.dllで shift_size値を読み込み、 _lwriteで10から50までの数をそこに書き込み、そのような範囲は、このパラメータを受け入れることができるように、次にInternalMsgを介してテンプレートを読み込みます。しかし、それが33511なのか35511なのかはわからない。WinUser32.mqhでは、最初の選択肢ですが、フォーラムでは、2番目の選択肢になっています。その質問は、純子さん宛のものでなければならない。MT5では、CHART_SHIFT_SIZEは 、ChartSetString() と ChartGetString()によって、コード内のどの場所からでも利用可能です。MT4には他のオプションがあるのでは?バカな質問ですが...。