GLUCK?! マウスクリックのイベントハンドリング!!! - ページ 13 1...67891011121314 新しいコメント Vladislav Andruschenko 2012.09.14 10:14 #121 sergeev:いそげ今だけ!!このユニークな商品をダウンロードしてください。 そして、特別にデザインされたバグ、小さな線のブリップがあるバージョンを手に入れることができます。:))は解決策があるのでしょうか? 全てに目を通しましたが~まだ思いつきません、バグではありません、行を変えるのは意図的ですが、ぶれます~以前にも問題を書きましたね。ブレとまでは言いませんが、X軸に沿った線がずれるんです。 surava 2016.02.10 10:22 #122 トレーダーの皆様へ.chmマニュアルのOrderSendAsync関数の 説明から、クリックに反応するシンプルなボタンの例をコピーしただけですが、私の場合は次のようになります。 void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- обработка события CHARTEVENT_CLICK ("Нажатие кнопки мышки на графике") if( id == CHARTEVENT_OBJECT_CLICK ) { Print( "=> ", __FUNCTION__, ": sparam = ", sparam ); if( sparam=="Finalize" ) { PrintFormat( "Closing position %s",_Symbol ); while( !ClosePosition() ); //--- отожмем нажатую кнопку обратно ObjectSetInteger( 0, "Finalize", OBJPROP_STATE, false ); } ChartRedraw(); } } void CreateFinalizeButton() { //--- проверим наличие объекта с именем "Finalize" if(ObjectFind(0,"Finalize")>=0) { //--- если найденный объект не является кнопкой, удалим его if(ObjectGetInteger(0,"Finalize",OBJPROP_TYPE)!=OBJ_BUTTON) ObjectDelete(0,"Finalize"); } else ObjectCreate(0,"Finalize",OBJ_BUTTON,0,0,0); // создадим кнопку "Finalize" //--- настроим кнопку "Finalize" ObjectSetInteger( 0, "Finalize", OBJPROP_CORNER, CORNER_LEFT_LOWER ); ObjectSetInteger( 0, "Finalize", OBJPROP_XDISTANCE, 100 ); ObjectSetInteger( 0, "Finalize", OBJPROP_YDISTANCE, 50 ); ObjectSetInteger( 0, "Finalize", OBJPROP_XSIZE, 150 ); ObjectSetInteger( 0, "Finalize", OBJPROP_YSIZE, 30 ); ObjectSetString( 0, "Finalize", OBJPROP_TEXT, "Finalize" ); ObjectSetInteger( 0, "Finalize", OBJPROP_COLOR, clrBlue ); //--- принудительно обновим график, чтобы кнопки отрисовались немедленно ChartRedraw(); }結論から言うと、時間軸が変わるとトリガーされます。この問題を解決する方法を教えてください。 Vladimir Karputov 2016.02.10 10:36 #123 surava:トレーダーの皆様へ.chmマニュアルのOrderSendAsync関数の 説明から、クリックに反応するシンプルなボタンの例をコピーしただけですが、私の場合は次のようになります。結論から言うと、時間軸が変わるとトリガーされます。この問題を解決する方法を教えてください。 標準のOrderSendAsyncの例では、チャート期間の変更に反応しない。これは、何かを失敗したことを意味します。端末の種類、端末のビルド、すべてのコードなど、より詳細な情報が必要です。 surava 2016.02.10 10:51 #124 Karputov Vladimir: 標準のOrderSendAsyncの例では、チャート期間の変更に反応しません。これは、何かを失敗したことを意味します。端末の種類、端末のビルド、コード全体など、より詳細な情報が必要です。ウラジミールさん、早速のご対応ありがとうございました。以下は端末の情報です。以下はそのコードです(取引関数の 仕組みを学び始めたところです)。#property copyright "surava" #property link "https://www.mql5.com" #property version "1.00" ulong MagicNumber = 1649353089; int OnInit() { CreateFinalizeButton(); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { while( !ClosePosition() ); if( ObjectFind( 0, "Finalize" ) >= 0 ) ObjectDelete(0,"Finalize"); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- } //+------------------------------------------------------------------+ //| Trade function | //+------------------------------------------------------------------+ void OnTrade() { } //+------------------------------------------------------------------+ //| TradeTransaction function | //+------------------------------------------------------------------+ void OnTradeTransaction(const MqlTradeTransaction& trans, const MqlTradeRequest& request, const MqlTradeResult& result) { if( trans.type != TRADE_TRANSACTION_REQUEST ) return; Print( "============= New transaction =============" ); Print( __FUNCTION__, " Trans action: ", EnumToString( trans.type ) ); Print( __FUNCTION__, " Trans order state: ", EnumToString( trans.order_state ) ); Print( __FUNCTION__, " Result order type: ", EnumToString( request.action ) ); Print( __FUNCTION__, " Request action: ", EnumToString( request.type ) ); Print( __FUNCTION__, " Deal price: ", result.price ); Print( __FUNCTION__, " Result comment: ", result.comment ); } void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- обработка события CHARTEVENT_CLICK ("Нажатие кнопки мышки на графике") if( id == CHARTEVENT_OBJECT_CLICK ) { Print( "=> ", __FUNCTION__, ": sparam = ", sparam ); if( sparam=="Finalize" ) { PrintFormat( "Closing position %s",_Symbol ); while( !ClosePosition() ); //--- отожмем нажатую кнопку обратно ObjectSetInteger( 0, "Finalize", OBJPROP_STATE, false ); } ChartRedraw(); } } void CreateFinalizeButton() { //--- проверим наличие объекта с именем "Finalize" if(ObjectFind(0,"Finalize")>=0) { //--- если найденный объект не является кнопкой, удалим его if(ObjectGetInteger(0,"Finalize",OBJPROP_TYPE)!=OBJ_BUTTON) ObjectDelete(0,"Finalize"); } else ObjectCreate(0,"Finalize",OBJ_BUTTON,0,0,0); // создадим кнопку "Finalize" //--- настроим кнопку "Finalize" ObjectSetInteger( 0, "Finalize", OBJPROP_CORNER, CORNER_LEFT_LOWER ); ObjectSetInteger( 0, "Finalize", OBJPROP_XDISTANCE, 100 ); ObjectSetInteger( 0, "Finalize", OBJPROP_YDISTANCE, 50 ); ObjectSetInteger( 0, "Finalize", OBJPROP_XSIZE, 150 ); ObjectSetInteger( 0, "Finalize", OBJPROP_YSIZE, 30 ); ObjectSetString( 0, "Finalize", OBJPROP_TEXT, "Finalize" ); ObjectSetInteger( 0, "Finalize", OBJPROP_COLOR, clrBlue ); //--- принудительно обновим график, чтобы кнопки отрисовались немедленно ChartRedraw(); } bool ClosePosition( bool async = true ) { int numPos = PositionsTotal(); PrintFormat( "Positions number: %d", numPos ); if( PositionSelect( _Symbol ) ) Print( "PositionSelect returned true" ); else Print( "PositionSelect returned false" ); if( numPos == 0 ) return true; double volume = PositionGetDouble( POSITION_VOLUME ); uint posType = PositionGetInteger( POSITION_TYPE ); MqlTradeRequest req={0}; req.action = TRADE_ACTION_DEAL; req.symbol = _Symbol; req.magic = MagicNumber; req.volume = volume; switch( posType ) { case POSITION_TYPE_BUY: req.type = ORDER_TYPE_SELL; req.price = SymbolInfoDouble( req.symbol, SYMBOL_BID ); break; case POSITION_TYPE_SELL: req.type = ORDER_TYPE_BUY; req.price = SymbolInfoDouble( req.symbol, SYMBOL_ASK ); break; default: Print( "Wrong position type" ); return true; } req.deviation = 3; req.comment = "Closing opened position"; MqlTradeResult res={0}; if( !OrderSend( req, res ) ) { Print(__FUNCTION__,": ошибка ",GetLastError(),", retcode = ",res.retcode); return false; } return true; } Vladimir Karputov 2016.02.10 11:00 #125 surava:ウラジミールさん、早速のご対応ありがとうございました。以下は端末の情報です。以下はそのコードです(取引 機能の仕組みを学び始めたところです)。 一目瞭然 - ながら削除。 surava 2016.02.10 11:14 #126 Karputov Vladimir: 一見すると、削除しながら。 取り外すのに費用はかかりませんが、問題は別のところにあるのは明らかです。私としては - 損切りよりも、時間内にポジションを閉じないと 無限ループに陥るという問題の方が、すぐに気づけないかもしれませんが)。 surava 2016.02.10 19:19 #127 なるほど、何が問題なのかがわかりました。なぜ、ボタンハンドラが行の有無に影響されるのか、このロジックだけ説明してください。input bool DescriptionModeFull=true; ??? surava 2016.02.17 22:06 #128 このラインだけではなさそうですね。曲がったメタトレーダーがちゃんと動くように、もうちょっと踊らないと...。つまり、私の例ではうまくいったのに、実際のプログラムではうまくいかなかったということです(( Igor Volodin 2016.02.18 06:15 #129 surava:つまり、私の例ではうまくいったのに、実際のプログラムではうまくいかなかったということです((もしかしたら、どこかにキッカケがあるのかも?そんなことをしても始まらない Artyom Trishkin 2016.02.18 06:43 #130 surava:このラインだけではなさそうですね。曲がったメタトレーダーがちゃんと動くように、もうちょっと踊らないと...。つまり、私の例ではうまくいったのに、実際のプログラムではうまくいかなかったということです(( 私のタンバリンは大きくないのでしょうか? 1...67891011121314 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
いそげ今だけ!!このユニークな商品をダウンロードしてください。
そして、特別にデザインされたバグ、小さな線のブリップがあるバージョンを手に入れることができます。
:))は解決策があるのでしょうか? 全てに目を通しましたが~まだ思いつきません、バグではありません、行を変えるのは意図的ですが、ぶれます~以前にも問題を書きましたね。
ブレとまでは言いませんが、X軸に沿った線がずれるんです。
トレーダーの皆様へ
.chmマニュアルのOrderSendAsync関数の 説明から、クリックに反応するシンプルなボタンの例をコピーしただけですが、私の場合は次のようになります。
結論から言うと、時間軸が変わるとトリガーされます。この問題を解決する方法を教えてください。
トレーダーの皆様へ
.chmマニュアルのOrderSendAsync関数の 説明から、クリックに反応するシンプルなボタンの例をコピーしただけですが、私の場合は次のようになります。
結論から言うと、時間軸が変わるとトリガーされます。この問題を解決する方法を教えてください。
標準のOrderSendAsyncの例では、チャート期間の変更に反応しません。これは、何かを失敗したことを意味します。端末の種類、端末のビルド、コード全体など、より詳細な情報が必要です。
ウラジミールさん、早速のご対応ありがとうございました。
以下は端末の情報です。
以下はそのコードです(取引関数の 仕組みを学び始めたところです)。
ウラジミールさん、早速のご対応ありがとうございました。
以下は端末の情報です。
以下はそのコードです(取引 機能の仕組みを学び始めたところです)。
一見すると、削除しながら。
なるほど、何が問題なのかがわかりました。なぜ、ボタンハンドラが行の有無に影響されるのか、このロジックだけ説明してください。
???
このラインだけではなさそうですね。曲がったメタトレーダーがちゃんと動くように、もうちょっと踊らないと...。
つまり、私の例ではうまくいったのに、実際のプログラムではうまくいかなかったということです((
つまり、私の例ではうまくいったのに、実際のプログラムではうまくいかなかったということです((
もしかしたら、どこかにキッカケがあるのかも?そんなことをしても始まらない
このラインだけではなさそうですね。曲がったメタトレーダーがちゃんと動くように、もうちょっと踊らないと...。
つまり、私の例ではうまくいったのに、実際のプログラムではうまくいかなかったということです((