初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 411 1...404405406407408409410411412413414415416417418...1503 新しいコメント 削除済み 2015.08.16 11:16 #4101 Leanid Aladzyeu:アレイの勉強を開始 .私は、配列、3つの配列= 0買い、1=売り、2=買いおよび売りの合計取引でプロ注文関数を書きました。そして、( 最初の条件 && 配列 [0] == 0 )なら買いを入れるという条件を書きました。 そして、もし( 最初の条件 && 配列 [1]== 0) ならば、売りポジションを建てることになります。しかし、テスターがエラーを投げてテストが止まってしまうのですが、何が問題なのでしょうか?( エラー " 配列の終了 " )アドレスしているインデックスが配列レイアウトの外にあることを意味します。例えば、array[ 3 ]の場合、0から2までの項目のみをアドレス指定することができます。コードを確認するもうひとつの可能性は、(ArrayResize() で)配列を分割せずに、その一部の要素にアクセスしようとした場合です。 Leanid Aladzyeu 2015.08.16 11:20 #4102 コード...void Oher(int Mag,string Symb, int &mas[2]) { ArrayInitialize( mas,0); int tip; int ticket3 =-1; for (int pos=OrdersTotal()-1; pos>=0; pos--) { if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==Mag && OrderSymbol()==Symb && OrderTicket()!=ticket3) { ticket3=OrderTicket(); tip=OrderType(); switch(tip) { case 0:mas[0]++; mas [2]++;break;// 0 покупка case 1:mas[1]++; mas [2]++;break;// 1 продажа } } continue; } }Чудо код вставил ) 2 раз получилось за все время что я на сайте) 削除済み 2015.08.16 11:22 #4103 Leanid Aladzyeu: コード... テスターには、どの行で、どの位置でエラーが発生したかが表示されているはずですので、ご自身で調べてみてください。 Leanid Aladzyeu 2015.08.16 11:25 #4104 Tapochun: テスターには、どの行で、どの位置でエラーが発生したかが表示されているはずですので、ご自身で調べてみてください。o_oops ターミナルもエラー箇所を突くとは知りませんでした、初めてクリティカルなエラー に遭遇しました。 case 1:mas[1]++; mas [2]++;break;// 1 продажа唾を吐きかける。 Leanid Aladzyeu 2015.08.16 11:39 #4105 修正しました。2つの配列の合計で3つ必要でした。配列の初期 化と関数の中で数字を+1してうまくいきました) Evgeniy Zykov 2015.08.17 14:07 #4106 インジケーターの動作を確認する方法を教えてください。EAが新しいバーを 形成するとき、インジケータを呼び出しますが、インジケータはこの時点でデータを持っておらず、私は前のバーのデータを取得します(それは計算する時間がありませんでした)。この問題を回避する方法さらに、Strategy Testerでは、すべてOKです。デモでは問題なく表示されるか、全く表示されないかのどちらかですそれはそれ、関係ない。解決済み。 Georgiy Liashchenko 2015.08.18 00:43 #4107 こんにちは、初心者の悩みがあるのですが・・・。最後のバーの終値とある期間の高値・安値を比較するシステムがうまくいきません、例えば最後の20小節私は何を間違えているのだろう?extern int MAGIC = 90324752; extern int START_HOUR = 7; extern int FINISH_HOUR = 18; extern int TRADE_LIMIT = 3; extern int SMMA_PERIOD = 100; extern int BB_PERIOD = 50; extern double BB_DEV = 1; extern double LOT = 1; extern double StopLoss = 400; extern double TakeProfit = 2000; void OnTick() { static int TICKET; double SMMA = iMA (Symbol(),0,SMMA_PERIOD,0,MODE_SMMA,PRICE_CLOSE,0); double BB_UP = iBands(Symbol(),0,BB_PERIOD,BB_DEV,0,PRICE_CLOSE,MODE_UPPER,0); double HIGHEST = High[iHighest(Symbol(),0,MODE_HIGH,20,0)]; if(Hour() >= START_HOUR && Hour() <= FINISH_HOUR && TRADE_COUNT < TRADE_LIMIT && POS_OPENED == FALSE && Seconds() >= 55) if(Minute() == 29 || Minute() == 59) { if(Close[0] > SMMA && Close[0] > BB_UP && Close[0] >= HIGHEST) { TICKET = OrderSend(Symbol(),OP_BUY,LOT,Ask,0,Ask-StopLoss*Point,Ask+TakeProfit*Point,NULL,MAGIC,0,Blue); if(TICKET < 0) { Alert("Order Send failed, error # ", GetLastError() ); } } } } Alertで確認したところ、テスターではなぜか一番最後のティックからの計算で最大値が出ますが、このような値が出てしまいます。 ティックと同じ回数なので、注文は開きません。2つ目の問題は、次のバーが開くまでEAを待機させる方法です(30m周期)。 コントロールポイントを使用してテストした場合はすべてうまくいきますが、ティックを使用した場合は、次のようになります。 で、EAがストップロスで閉じた直後の同じバーで開く...。 また、ティックであるかどうかに関係なく、取引を終了するにはどうしたらよいでしょうか。 例えば、期間30mの場合、バーの終了5秒前(29.55, 59.55)に注文を終了したいのです。 その瞬間のすべてのデータをもとにこの段階での問題は、5秒以内にティックが発生しない場合、したがって、ノー(理論的にはでたらめですが、現実には何らかの理由で次のティックが数本のローソク足で表示されることがあります。は、何らかの理由で数本のキャンドルで判明することがあります。 ありがとうございました。 Evgeniy Zykov 2015.08.18 10:02 #4108 コメントに協力してください。各バーには、コメントが生成されます。チックするたびに、既存のコメントにさらにテキストを追加したい。コードを呼び出す。void UserMarketComment( ) { string com=ChartGetString(0,CHART_COMMENT); // Получаем текст существующего комментария string st="Целевой убыток="+DoubleToStr(-inpTargetLoss,2)+" "+AccountCurrency()+" Текущ"; if(AccountProfit()<0) st=st+"ий убыток="; else st=st+"ая прибыль="; st=st+DoubleToStr(AccountProfit(),2)+" "+AccountCurrency()+" Целевая прибыль="+DoubleToStr(inpTargetProfit,2)+" "+AccountCurrency(); Comment(com+"",TimeToStr(TimeCurrent(),TIME_SECONDS)," Spread = ",MarketInfo(Symbol(),MODE_SPREAD), "\n ",st); }新しいコメントを追加し、改行 するごとにテキストがスライドして表示されます。出力する前に最後の数行を削除するようにするには? Questions from Beginners MQL5 初心者の方からの質問 MQL4 MT4 MetaTrader Questions from Beginners MQL4 Alexey Viktorov 2015.08.18 17:19 #4109 ForTorg ZEVs:コメントに協力してください。各バーには、コメントが生成されます。チックするごとに、既存のコメントにさらにテキストを追加したい。コードを呼び出す。void UserMarketComment( ) { string com=ChartGetString(0,CHART_COMMENT); // Получаем текст существующего комментария string st="Целевой убыток="+DoubleToStr(-inpTargetLoss,2)+" "+AccountCurrency()+" Текущ"; if(AccountProfit()<0) st=st+"ий убыток="; else st=st+"ая прибыль="; st=st+DoubleToStr(AccountProfit(),2)+" "+AccountCurrency()+" Целевая прибыль="+DoubleToStr(inpTargetProfit,2)+" "+AccountCurrency(); Comment(com+"",TimeToStr(TimeCurrent(),TIME_SECONDS)," Spread = ",MarketInfo(Symbol(),MODE_SPREAD), "\n ",st); }新しいコメントを追加し、改行 するごとにテキストがスライドして表示されます。出力する前に最後の数行を削除するようにするには?Comment()を完全に置き換えるしかないようです。そして結果的に、コメントの一部を刻々と変化させるためには、刻々とコメントを完全に変化させなければならない。 Alexey Volchanskiy 2015.08.18 18:24 #4110 ForTorg ZEVs:コメントに協力してください。各バーには、コメントが生成されます。チックするたびに、既存のコメントにさらにテキストを追加したい。コードを呼び出す。void UserMarketComment( ) { string com=ChartGetString(0,CHART_COMMENT); // Получаем текст существующего комментария string st="Целевой убыток="+DoubleToStr(-inpTargetLoss,2)+" "+AccountCurrency()+" Текущ"; if(AccountProfit()<0) st=st+"ий убыток="; else st=st+"ая прибыль="; st=st+DoubleToStr(AccountProfit(),2)+" "+AccountCurrency()+" Целевая прибыль="+DoubleToStr(inpTargetProfit,2)+" "+AccountCurrency(); Comment(com+"",TimeToStr(TimeCurrent(),TIME_SECONDS)," Spread = ",MarketInfo(Symbol(),MODE_SPREAD), "\n ",st); }新しいコメントを追加し、改行 するごとにテキストがスライドして表示されます。出力前に最後の数行を削除するようにするには? コメント中に制御文字"˶‾‾‾"がありますが、これは改行文字です。削除すれば、複数行になることはないでしょう。 1...404405406407408409410411412413414415416417418...1503 新しいコメント 理由: キャンセル 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
アレイの勉強を開始 .
私は、配列、3つの配列= 0買い、1=売り、2=買いおよび売りの合計取引でプロ注文関数を書きました。
そして、( 最初の条件 && 配列 [0] == 0 )なら買いを入れるという条件を書きました。
そして、もし( 最初の条件 && 配列 [1]== 0) ならば、売りポジションを建てることになります。
しかし、テスターがエラーを投げてテストが止まってしまうのですが、何が問題なのでしょうか?( エラー " 配列の終了 " )
アドレスしているインデックスが配列レイアウトの外にあることを意味します。例えば、array[ 3 ]の場合、0から2までの項目のみをアドレス指定することができます。コードを確認する
もうひとつの可能性は、(ArrayResize() で)配列を分割せずに、その一部の要素にアクセスしようとした場合です。
コード...
テスターには、どの行で、どの位置でエラーが発生したかが表示されているはずですので、ご自身で調べてみてください。
o_oops ターミナルもエラー箇所を突くとは知りませんでした、初めてクリティカルなエラー に遭遇しました。
唾を吐きかける。
インジケーターの動作を確認する方法を教えてください。
EAが新しいバーを 形成するとき、インジケータを呼び出しますが、インジケータはこの時点でデータを持っておらず、私は前のバーのデータを取得します(それは計算する時間がありませんでした)。
この問題を回避する方法さらに、Strategy Testerでは、すべてOKです。デモでは問題なく表示されるか、全く表示されないかのどちらかです
それはそれ、関係ない。解決済み。
こんにちは、初心者の悩みがあるのですが・・・。
最後のバーの終値とある期間の高値・安値を比較するシステムがうまくいきません、例えば
最後の20小節私は何を間違えているのだろう?
Alertで確認したところ、テスターではなぜか一番最後のティックからの計算で最大値が出ますが、このような値が出てしまいます。
ティックと同じ回数なので、注文は開きません。
2つ目の問題は、次のバーが開くまでEAを待機させる方法です(30m周期)。 コントロールポイントを使用してテストした場合はすべてうまくいきますが、ティックを使用した場合は、次のようになります。
で、EAがストップロスで閉じた直後の同じバーで開く...。
また、ティックであるかどうかに関係なく、取引を終了するにはどうしたらよいでしょうか。 例えば、期間30mの場合、バーの終了5秒前(29.55, 59.55)に注文を終了したいのです。
その瞬間のすべてのデータをもとにこの段階での問題は、5秒以内にティックが発生しない場合、したがって、ノー
(理論的にはでたらめですが、現実には何らかの理由で次のティックが数本のローソク足で表示されることがあります。
は、何らかの理由で数本のキャンドルで判明することがあります。
ありがとうございました。コメントに協力してください。各バーには、コメントが生成されます。チックするたびに、既存のコメントにさらにテキストを追加したい。
コードを呼び出す。
void UserMarketComment( )
{
string com=ChartGetString(0,CHART_COMMENT); // Получаем текст существующего комментария
string st="Целевой убыток="+DoubleToStr(-inpTargetLoss,2)+" "+AccountCurrency()+" Текущ";
if(AccountProfit()<0) st=st+"ий убыток=";
else st=st+"ая прибыль=";
st=st+DoubleToStr(AccountProfit(),2)+" "+AccountCurrency()+" Целевая прибыль="+DoubleToStr(inpTargetProfit,2)+" "+AccountCurrency();
Comment(com+"",TimeToStr(TimeCurrent(),TIME_SECONDS)," Spread = ",MarketInfo(Symbol(),MODE_SPREAD),
"\n ",st);
}
新しいコメントを追加し、改行 するごとにテキストがスライドして表示されます。
出力する前に最後の数行を削除するようにするには?
コメントに協力してください。各バーには、コメントが生成されます。チックするごとに、既存のコメントにさらにテキストを追加したい。
コードを呼び出す。
void UserMarketComment( )
{
string com=ChartGetString(0,CHART_COMMENT); // Получаем текст существующего комментария
string st="Целевой убыток="+DoubleToStr(-inpTargetLoss,2)+" "+AccountCurrency()+" Текущ";
if(AccountProfit()<0) st=st+"ий убыток=";
else st=st+"ая прибыль=";
st=st+DoubleToStr(AccountProfit(),2)+" "+AccountCurrency()+" Целевая прибыль="+DoubleToStr(inpTargetProfit,2)+" "+AccountCurrency();
Comment(com+"",TimeToStr(TimeCurrent(),TIME_SECONDS)," Spread = ",MarketInfo(Symbol(),MODE_SPREAD),
"\n ",st);
}
新しいコメントを追加し、改行 するごとにテキストがスライドして表示されます。
出力する前に最後の数行を削除するようにするには?
Comment()を完全に置き換えるしかないようです。
そして結果的に、コメントの一部を刻々と変化させるためには、刻々とコメントを完全に変化させなければならない。
コメントに協力してください。各バーには、コメントが生成されます。チックするたびに、既存のコメントにさらにテキストを追加したい。
コードを呼び出す。
void UserMarketComment( )
{
string com=ChartGetString(0,CHART_COMMENT); // Получаем текст существующего комментария
string st="Целевой убыток="+DoubleToStr(-inpTargetLoss,2)+" "+AccountCurrency()+" Текущ";
if(AccountProfit()<0) st=st+"ий убыток=";
else st=st+"ая прибыль=";
st=st+DoubleToStr(AccountProfit(),2)+" "+AccountCurrency()+" Целевая прибыль="+DoubleToStr(inpTargetProfit,2)+" "+AccountCurrency();
Comment(com+"",TimeToStr(TimeCurrent(),TIME_SECONDS)," Spread = ",MarketInfo(Symbol(),MODE_SPREAD),
"\n ",st);
}
新しいコメントを追加し、改行 するごとにテキストがスライドして表示されます。
出力前に最後の数行を削除するようにするには?