初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 1323 1...131613171318131913201321132213231324132513261327132813291330...1504 新しいコメント Sprut 185 2021.07.01 00:13 #13221 Alexey Viktorov:マーチンは、インジケーター信号が反対のときだけ作動させるべきか、それとも関係なく作動させるべきか?例:指標に従って買いポジションを建てた場合。価格が設定された距離だけ下落し、インジケータはすでに売りを示しています。買いポジションを建てるのですか? 短く言えば、......マーティンはトレンドに逆らって、下値に注文を出すだけで、インジケータはトレンドに沿った動きしかしない。 明日、Photoshopで描いてみて、そのファイルをアップします。 削除済み 2021.07.01 00:57 #13222 Sprut 185 :要するに-同時に.....マーティンはトレンドに逆らってのみ機能し、注文は赤で表示されます。インジケーターによると、トレンドのみを処理します。明日はフォトショップで絵を描いてファイルを投稿してみます私はここで何かをしました-私自身は10万ルーブルでは理解できません。最大200万 //+------------------------------------------------------------------+ //| 6 Sprut 185.mq5 | //| Copyright 2021, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2021, MetaQuotes Ltd." #property link " https://www.mql5.com " #property version "1.00" //--- #define MACD_MAGIC 1234502 //--- #include <Trade\Trade.mqh> #include <Trade\SymbolInfo.mqh> #include <Trade\PositionInfo.mqh> #include <Trade\AccountInfo.mqh> //--- double m_adjusted_point; // point value adjusted for 3 or 5 points CTrade m_trade; // trading object CSymbolInfo m_symbol; // symbol info object CPositionInfo m_position; // trade position object CAccountInfo m_account; // account info wrapper input group "---- : Parameters: ----" input int InpTProfit = 100000 ; // : Take Profit --> (In currency the amount) input double InpLotsRisk = 0.1 ; // : Maximum Risk in percentage input group "---- : Parameters: ----" input bool InpClOp = false ; // : Close opposite //--- int m_price_uno; int m_handle_macd; // MACD indicator handle int ExtTimeOut= 10 ; // time out in seconds between trade operations //+------------------------------------------------------------------+ //| Calculate optimal lot size | //+------------------------------------------------------------------+ double OptimizedBuy( void ) { double PROFIT_BUY= 0.00 ; int total= PositionsTotal (); for ( int i=total- 1 ; i>= 0 ; i--) // returns the number of open positions { string position_GetSymbol= PositionGetSymbol (i); // GetSymbol позиции if (position_GetSymbol==m_symbol.Name()) { if (m_position.PositionType()== POSITION_TYPE_BUY ) { PROFIT_BUY=PROFIT_BUY+m_position.Select( Symbol ()); } } } double Lots=InpLotsRisk; double ab=PROFIT_BUY; if (ab> 0 && ab<= 1 ) Lots=InpLotsRisk* 2 ; if (ab> 1 && ab<= 2 ) Lots=InpLotsRisk* 4 ; if (ab> 2 && ab<= 3 ) Lots=InpLotsRisk* 8 ; if (ab> 3 ) Lots=InpLotsRisk* 16 ; return (Lots); } //+------------------------------------------------------------------+ //| Calculate optimal lot size | //+------------------------------------------------------------------+ double OptimizedSell( void ) { double PROFIT_SELL= 0.00 ; int total= PositionsTotal (); for ( int i=total- 1 ; i>= 0 ; i--) // returns the number of open positions { string position_GetSymbol= PositionGetSymbol (i); // GetSymbol позиции if (position_GetSymbol==m_symbol.Name()) { if (m_position.PositionType()== POSITION_TYPE_SELL ) { PROFIT_SELL=PROFIT_SELL+m_position.Select( Symbol ()); } } } double Lots=InpLotsRisk; double ab=PROFIT_SELL; if (ab> 0 && ab<= 1 ) Lots=InpLotsRisk* 2 ; if (ab> 1 && ab<= 2 ) Lots=InpLotsRisk* 4 ; if (ab> 2 && ab<= 3 ) Lots=InpLotsRisk* 8 ; if (ab> 3 ) Lots=InpLotsRisk* 16 ; return (Lots); } //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit () { //--- initialize common information m_symbol.Name( Symbol ()); // symbol m_trade.SetExpertMagicNumber(MACD_MAGIC); // magic m_trade.SetMarginMode(); m_trade.SetTypeFillingBySymbol( Symbol ()); //--- tuning for 3 or 5 digits int digits_adjust= 1 ; if (m_symbol. Digits ()== 3 || m_symbol. Digits ()== 5 ) digits_adjust= 10 ; m_adjusted_point=m_symbol. Point ()*digits_adjust; //--- set default deviation for trading in adjusted points m_trade.SetDeviationInPoints( 3 *digits_adjust); //--- create MACD indicator m_handle_macd= iCustom ( NULL , 0 , "StepMA_NRTR" ); if (m_handle_macd== INVALID_HANDLE ) { printf ( "Error creating MACD indicator" ); return ( false ); } //--- return ( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit ( const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick ( void ) { //--- if (ProfitBuy() || ProfitSell()) { return ; } static datetime limit_time= 0 ; // last trade processing time + timeout //--- don't process if timeout if ( TimeCurrent ()>=limit_time) { //--- check for data if ( Bars ( Symbol (), Period ())> 2 ) { //--- change limit time by timeout in seconds if processed if (Processing()) limit_time= TimeCurrent ()+ExtTimeOut; } } } //+------------------------------------------------------------------+ //| main function returns true if any position processed | //+------------------------------------------------------------------+ bool Processing( void ) { //--- refresh rates if (!m_symbol.RefreshRates()) return ( false ); double m_buff_MACD_main[],m_buff_MACD_signal[]; bool StNRUp,StNRDn; ArraySetAsSeries (m_buff_MACD_main, true ); ArraySetAsSeries (m_buff_MACD_signal, true ); int start_pos= 1 ,count= 3 ; if (!iGetArray(m_handle_macd, 0 ,start_pos,count,m_buff_MACD_main)|| !iGetArray(m_handle_macd, 1 ,start_pos,count,m_buff_MACD_signal)) { return ( false ); } //--- StNRUp=m_buff_MACD_main[ 0 ]<m_buff_MACD_signal[ 0 ]; StNRDn=m_buff_MACD_main[ 0 ]>m_buff_MACD_signal[ 0 ]; //--- BUY Signal if (StNRUp) { if (InpClOp) if (ShortClosed()) Sleep ( 1000 ); if (m_price_uno< 0 ) LongOpened(); m_price_uno=+ 1 ; return ( true ); } //--- SELL Signal if (StNRDn) { if (InpClOp) if (LongClosed()) Sleep ( 1000 ); if (m_price_uno> 0 ) ShortOpened(); m_price_uno=- 1 ; return ( true ); } //--- exit without position processing return ( false ); } //+------------------------------------------------------------------+ //| Check for long position closing | //+------------------------------------------------------------------+ bool LongClosed( void ) { bool res= false ; //--- should it be closed? ClosePositions( POSITION_TYPE_BUY ); //--- processed and cannot be modified res= true ; //--- result return (res); } //+------------------------------------------------------------------+ //| Check for short position closing | //+------------------------------------------------------------------+ bool ShortClosed( void ) { bool res= false ; //--- should it be closed? ClosePositions( POSITION_TYPE_SELL ); //--- processed and cannot be modified res= true ; //--- result return (res); } //+------------------------------------------------------------------+ //| Check for long position opening | //+------------------------------------------------------------------+ bool LongOpened( void ) { bool res= false ; //--- check for long position (BUY) possibility double price=m_symbol.Ask(); //--- check for free money if (m_account.FreeMarginCheck( Symbol (), ORDER_TYPE_BUY ,OptimizedBuy(),price)< 0.0 ) printf ( "We have no money. Free Margin = %f" ,m_account.FreeMargin()); else { //--- open position if (m_trade.PositionOpen( Symbol (), ORDER_TYPE_BUY ,OptimizedBuy(),price, 0.0 , 0.0 )) printf ( "Position by %s to be opened" , Symbol ()); else { printf ( "Error opening BUY position by %s : '%s'" , Symbol (),m_trade.ResultComment()); printf ( "Open parameters : price=%f" ,price); } PlaySound ( "ok.wav" ); } //--- in any case we must exit from expert res= true ; //--- result return (res); } //+------------------------------------------------------------------+ //| Check for short position opening | //+------------------------------------------------------------------+ bool ShortOpened( void ) { bool res= false ; //--- check for short position (SELL) possibility double price=m_symbol.Bid(); //--- check for free money if (m_account.FreeMarginCheck( Symbol (), ORDER_TYPE_SELL ,OptimizedSell(),price)< 0.0 ) printf ( "We have no money. Free Margin = %f" ,m_account.FreeMargin()); else { //--- open position if (m_trade.PositionOpen( Symbol (), ORDER_TYPE_SELL ,OptimizedSell(),price, 0.0 , 0.0 )) printf ( "Position by %s to be opened" , Symbol ()); else { printf ( "Error opening SELL position by %s : '%s'" , Symbol (),m_trade.ResultComment()); printf ( "Open parameters : price=%f" ,price); } PlaySound ( "ok.wav" ); } //--- in any case we must exit from expert res= true ; //--- result return (res); } //+------------------------------------------------------------------+ //| Refreshes the symbol quotes data | //+------------------------------------------------------------------+ bool RefreshRates() { //--- refresh rates if (!m_symbol.RefreshRates()) { return ( false ); } //--- protection against the return value of "zero" if (m_symbol.Ask()== 0 || m_symbol.Bid()== 0 ) { return ( false ); } //--- return ( true ); } //+------------------------------------------------------------------+ //| Check Freeze and Stops levels | //+------------------------------------------------------------------+ void FreezeStopsLevels( double &freeze, double &stops) { //--- check Freeze and Stops levels double coeff=( double ) 1 ; if (!RefreshRates() || !m_symbol.Refresh()) return ; //--- FreezeLevel -> for pending order and modification double freeze_level=m_symbol.FreezeLevel()*m_symbol. Point (); if (freeze_level== 0.0 ) if ( 1 > 0 ) freeze_level=(m_symbol.Ask()-m_symbol.Bid())*coeff; //--- StopsLevel -> for TakeProfit and StopLoss double stop_level=m_symbol.StopsLevel()*m_symbol. Point (); if (stop_level== 0.0 ) if ( 1 > 0 ) stop_level=(m_symbol.Ask()-m_symbol.Bid())*coeff; //--- freeze=freeze_level; stops=stop_level; //--- return ; } //+------------------------------------------------------------------+ //| Close positions | //+------------------------------------------------------------------+ void ClosePositions( const ENUM_POSITION_TYPE pos_type) { double freeze= 0.0 ,stops= 0.0 ; FreezeStopsLevels(freeze,stops); for ( int i= PositionsTotal ()- 1 ; i>= 0 ; i--) // returns the number of current positions if (m_position.SelectByIndex(i)) // selects the position by index for further access to its properties if (m_position. Symbol ()==m_symbol.Name() && m_position.Magic()==MACD_MAGIC) if (m_position.PositionType()==pos_type) { if (m_position.PositionType()== POSITION_TYPE_BUY ) { bool take_profit_level=((m_position.TakeProfit()!= 0.0 && m_position.TakeProfit()-m_position.PriceCurrent()>=freeze) || m_position.TakeProfit()== 0.0 ); bool stop_loss_level=((m_position.StopLoss()!= 0.0 && m_position.PriceCurrent()-m_position.StopLoss()>=freeze) || m_position.StopLoss()== 0.0 ); if (take_profit_level && stop_loss_level) if (!m_trade.PositionClose(m_position.Ticket())) // close a position by the specified m_symbol Print ( __FILE__ , " " , __FUNCTION__ , ", ERROR: " , "BUY PositionClose " ,m_position.Ticket(), ", " ,m_trade.ResultRetcodeDescription()); } if (m_position.PositionType()== POSITION_TYPE_SELL ) { bool take_profit_level=((m_position.TakeProfit()!= 0.0 && m_position.PriceCurrent()-m_position.TakeProfit()>=freeze) || m_position.TakeProfit()== 0.0 ); bool stop_loss_level=((m_position.StopLoss()!= 0.0 && m_position.StopLoss()-m_position.PriceCurrent()>=freeze) || m_position.StopLoss()== 0.0 ); if (take_profit_level && stop_loss_level) if (!m_trade.PositionClose(m_position.Ticket())) // close a position by the specified m_symbol Print ( __FILE__ , " " , __FUNCTION__ , ", ERROR: " , "SELL PositionClose " ,m_position.Ticket(), ", " ,m_trade.ResultRetcodeDescription()); } PlaySound ( "ok.wav" ); } } //+------------------------------------------------------------------+ //| Filling the indicator buffers from the indicator | //+------------------------------------------------------------------+ bool iGetArray( const int handle, const int buffer, const int start_pos, const int count, double &arr_buffer[]) { bool result= true ; if (! ArrayIsDynamic (arr_buffer)) { return ( false ); } ArrayFree (arr_buffer); //--- reset error code ResetLastError (); //--- fill a part of the iBands array with values from the indicator buffer int copied= CopyBuffer (handle,buffer,start_pos,count,arr_buffer); if (copied!=count) { return ( false ); } return (result); } //+------------------------------------------------------------------+ //| ProfitOnTick closing | //+------------------------------------------------------------------+ bool ProfitBuy( void ) { bool res= false ; double PROFIT_BUY= 0.00 ; int total= PositionsTotal (); for ( int i=total- 1 ; i>= 0 ; i--) { string position_GetSymbol= PositionGetSymbol (i); if (position_GetSymbol==m_symbol.Name()) { if (m_position.PositionType()== POSITION_TYPE_BUY ) { PROFIT_BUY=PROFIT_BUY+ PositionGetDouble ( POSITION_PROFIT ); } } if (PROFIT_BUY>=InpTProfit) { if (LongClosed()) res= true ; if (ShortOpened()) res= true ; } } return (res); } //+------------------------------------------------------------------+ //| ProfitOnTick closing | //+------------------------------------------------------------------+ bool ProfitSell( void ) { bool res= false ; double PROFIT_SELL= 0.00 ; int total= PositionsTotal (); for ( int i=total- 1 ; i>= 0 ; i--) { string position_GetSymbol= PositionGetSymbol (i); if (position_GetSymbol==m_symbol.Name()) { if (m_position.PositionType()== POSITION_TYPE_SELL ) { PROFIT_SELL=PROFIT_SELL+ PositionGetDouble ( POSITION_PROFIT ); } } if (PROFIT_SELL>=InpTProfit) { if (ShortClosed()) res= true ; if (LongOpened()) res= true ; } } return (res); } //+------------------------------------------------------------------+ Vitaly Muzichenko 2021.07.01 01:01 #13223 今すぐ改名する必要があります。このようなテストでは、スプラットになるか、盗まれるか、何が正しいかわかりません。 //+------------------------------------------------------------------+ //| 6 Сопрут 185.mq5 | //| Copyright 2021, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ 削除済み 2021.07.01 01:08 #13224 Vitaly Muzichenko:今すぐ改名する必要があります。このようなテストでは、確実に湧き出る、または盗まれる、適切な表現がわかりません。 もしかしたら、誰かが金持ちになるかもしれない。私はそうはならない、慎ましく生きるのが好きなんだ。 Vitaly Muzichenko 2021.07.01 01:36 #13225 SanAlex:もしかしたら、誰かが金持ちになるかもしれない。私はそうはならない、ただ慎ましく生きるのが好きなんだ。 2年以上ぶりにテスターで動かしたEAです。 今、テスターを扱っていますが、すべてが大きく変わり、さまざまなボタンが現れました。 今のところ、デモ版にして2週間ほど動かしてみようという結論に至っています。 とにかく、もう盗んじゃいました;) Ivan Nagibin 2021.07.01 07:21 #13226 Aleksei Stepanenko:そういうものなのでは? 私も同じようにしましたが、バッファは0のままです、ご自身で試してみてください。ただ一つ分からないのは、私のmt5ではIndicatorBuffers() 関数で、#propertyindicatorbuffersを使いました。 Fast235 2021.07.01 08:31 #13227 SanAlex:10万ルーブルから200万ルーブルになったのは、何か悪いことをしたのだろうか。 そんなことより、もうすぐマーケットで発売されるよ。 削除済み 2021.07.01 09:16 #13228 Fast235:そんなことより、もうすぐマーケットで発売されるよ。 でも、少なくとも勉強して何かを得ることはできる。頭の片隅にもっとアイデアがあるんです。 \\\\\\\\\\\\\\\\\\\\ 必要な機能は2つだけです。しかも、見習いだからプログラミングの専門家にきちんと書き直してもらわないといけない。 以下はその機能です。 1.- 1. ロットマルチプライヤーである。最初のポジションが開かれ、次に2番目のポジションが掛けられる、というように。を開くと、2つ目のポジションが掛け算され、以下同様となります。 //+------------------------------------------------------------------+ //| Calculate optimal lot size | //+------------------------------------------------------------------+ double OptimizedBuy(void) { double PROFIT_BUY=0.00; int total=PositionsTotal(); for(int i=total-1; i>=0; i--) // returns the number of open positions { string position_GetSymbol=PositionGetSymbol(i); // GetSymbol позиции if(position_GetSymbol==m_symbol.Name()) { if(m_position.PositionType()==POSITION_TYPE_BUY) { PROFIT_BUY=PROFIT_BUY+m_position.Select(Symbol()); } } } double Lots=InpLotsRisk; double ab=PROFIT_BUY; if(ab>0 && ab<=1) Lots=InpLotsRisk*2; if(ab>1 && ab<=2) Lots=InpLotsRisk*4; if(ab>2 && ab<=3) Lots=InpLotsRisk*8; if(ab>3) Lots=InpLotsRisk*16; return(Lots); } //+------------------------------------------------------------------+ と2 - それは通貨で合計金額をクローズし、買いのポジションを開いた //+------------------------------------------------------------------+ //| ProfitOnTick closing | //+------------------------------------------------------------------+ bool ProfitBuy(void) { bool res=false; double PROFIT_BUY=0.00; int total=PositionsTotal(); for(int i=total-1; i>=0; i--) { string position_GetSymbol=PositionGetSymbol(i); if(position_GetSymbol==m_symbol.Name()) { if(m_position.PositionType()==POSITION_TYPE_BUY) { PROFIT_BUY=PROFIT_BUY+PositionGetDouble(POSITION_PROFIT); } } if(PROFIT_BUY>=InpTProfit) { if(LongClosed()) res=true; if(ShortOpened()) res=true; } } return(res); } //+------------------------------------------------------------------+ もちろん後半も Fast235 2021.07.01 09:18 #13229 SanAlex:頭の片隅にもっとアイデアがあるんです。頭の片隅にもっとアイデアがあるんです。 そして、価値があるものならコードベースに入れるべきです。 削除済み 2021.07.01 09:50 #13230 Vitaly Muzichenko:2年以上ぶりにテスターで動かしたEAです。テスターを理解しようとしているのですが、すべてが大きく変わり、さまざまなボタンが現れました。今のところ、デモ版にして2週間ほど動かしてみようという結論に至っています。要するに、私が盗んだのです ;) Expert Advisorでもテストしてみましたが、なぜか終値に依存するんですよね。少なめに入れれば負けるし、多めに入れれば負ける。 10万ルーブルと10万ルーブルの 利益をテストしていたら、200万ルーブルになった(去年EUR/USDで1時間だけ)。 1...131613171318131913201321132213231324132513261327132813291330...1504 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
マーチンは、インジケーター信号が反対のときだけ作動させるべきか、それとも関係なく作動させるべきか?
例:指標に従って買いポジションを建てた場合。価格が設定された距離だけ下落し、インジケータはすでに売りを示しています。買いポジションを建てるのですか?
短く言えば、......マーティンはトレンドに逆らって、下値に注文を出すだけで、インジケータはトレンドに沿った動きしかしない。
明日、Photoshopで描いてみて、そのファイルをアップします。
要するに-同時に.....マーティンはトレンドに逆らってのみ機能し、注文は赤で表示されます。インジケーターによると、トレンドのみを処理します。
明日はフォトショップで絵を描いてファイルを投稿してみます
私はここで何かをしました-私自身は10万ルーブルでは理解できません。最大200万
今すぐ改名する必要があります。このようなテストでは、スプラットになるか、盗まれるか、何が正しいかわかりません。
今すぐ改名する必要があります。このようなテストでは、確実に湧き出る、または盗まれる、適切な表現がわかりません。
もしかしたら、誰かが金持ちになるかもしれない。私はそうはならない、慎ましく生きるのが好きなんだ。
もしかしたら、誰かが金持ちになるかもしれない。私はそうはならない、ただ慎ましく生きるのが好きなんだ。
2年以上ぶりにテスターで動かしたEAです。
今、テスターを扱っていますが、すべてが大きく変わり、さまざまなボタンが現れました。
今のところ、デモ版にして2週間ほど動かしてみようという結論に至っています。
とにかく、もう盗んじゃいました;)
そういうものなのでは?
10万ルーブルから200万ルーブルになったのは、何か悪いことをしたのだろうか。
そんなことより、もうすぐマーケットで発売されるよ。
そんなことより、もうすぐマーケットで発売されるよ。
でも、少なくとも勉強して何かを得ることはできる。頭の片隅にもっとアイデアがあるんです。
\\\\\\\\\\\\\\\\\\\\
必要な機能は2つだけです。しかも、見習いだからプログラミングの専門家にきちんと書き直してもらわないといけない。
以下はその機能です。
1.- 1. ロットマルチプライヤーである。最初のポジションが開かれ、次に2番目のポジションが掛けられる、というように。を開くと、2つ目のポジションが掛け算され、以下同様となります。
と2 - それは通貨で合計金額をクローズし、買いのポジションを開いた
もちろん後半も
頭の片隅にもっとアイデアがあるんです。頭の片隅にもっとアイデアがあるんです。
そして、価値があるものならコードベースに入れるべきです。
2年以上ぶりにテスターで動かしたEAです。
テスターを理解しようとしているのですが、すべてが大きく変わり、さまざまなボタンが現れました。
今のところ、デモ版にして2週間ほど動かしてみようという結論に至っています。
要するに、私が盗んだのです ;)
Expert Advisorでもテストしてみましたが、なぜか終値に依存するんですよね。少なめに入れれば負けるし、多めに入れれば負ける。
10万ルーブルと10万ルーブルの 利益をテストしていたら、200万ルーブルになった(去年EUR/USDで1時間だけ)。