効果的なアドバイザーの書き方 - ページ 27 1...202122232425262728293031323334...41 新しいコメント Renat Akhtyamov 2021.11.20 19:24 #261 darirunu1 #:というアドバイザーを想像してください。1年前にも言ったが、年率50%といえばまだ稼げている。 ダニで 同じことを何ヶ月も続けて、汗をかかないようにする。 リラックスして、自信を持って、目に見える効果を発揮してください。 ;) Renat Akhtyamov 2021.11.20 19:24 #262 darirunu1 #:それは私です)) 規範 darirunu1 2021.11.20 19:30 #263 Renat Akhtyamov #:ノルプ それはなぜでしょうか?フォーラムではいつも何かが飛び出してきて、それを別の方向に持っていく人がいるような気がするのですが? darirunu1 2021.11.20 19:41 #264 Renat Akhtyamov #:は、ダニにできる。何カ月も同じことをやって、汗をかかない。穏やかに、自信たっぷりに、そしてたくましく。;) まだ考えていません、私のExpert Advisorは、その早さを確認するために1年間ぶら下がっています。ポンドでは、あらゆるトレンドに耐えることができました。まるで、取引を開始するタイミングがわかっているかのようです。ドローダウンは1.47%でした。 a007 2021.11.20 19:50 #265 darirunu1 #:まだ何も考えていません、お粗末さを確認するために1年間吊るしてあるのです。ポンドでは、あらゆるトレンドに耐えることができました。まるで、取引を開始するタイミングを事前に知っているかのようです。ドローダウンは1.47%でした。 ロットを10倍にする-利益が10倍になる darirunu1 2021.11.20 19:56 #266 a007 #:ロットを10倍にする-利益が10倍になる ワババイ、なんて賢い子なんだろう))他の選択肢もあるのでは? 削除済み 2021.11.21 01:54 #267 効果的なアドバイザーの書き方 -続きはこちら では、何から始めればいいのか。 1.EAに最適なレバレッジは何ですか?- 100を超えないと思います。 2.EAにとって最も重要な機能はロットだと思います。これが、私たちが利益を得るための機能です。 3.---- 4.---- など---- EAを効果的に機能させるために、他にどのような機能が必要なのか? 削除済み 2021.11.21 03:04 #268 SanAlex # :効果的なアドバイザーを書く-継続する。では、どこから始めればよいのでしょうか。 1.アドバイザーにとってどのレバレッジが優れているか。 -100以下だと思います2.アドバイザーにとって重要な機能-私が理解しているように、たくさんあります。この機能からも利益を得ることができます。 3. ---- 4. ----等--------エキスパートアドバイザーが効果を発揮するには、他にどのような機能が必要ですか?それから始めましょう-よろしければ-次の位置でロットの増加を追加しました(私が掘って変更した黄色) //+------------------------------------------------------------------+ //| MACD Sample.mq5 | //| Copyright 2009-2017, MetaQuotes Software Corp. | //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2009-2017, MetaQuotes Software Corp." #property link " http://www.mql5.com " #property version "5.50" #property description "It is important to make sure that the expert works with a normal" #property description "chart and the user did not make any mistakes setting input" #property description "variables (Lots, TakeProfit, TrailingStop) in our case," #property description "we check TakeProfit on a chart of more than 2*trend_period bars" #define MACD_MAGIC 1234502 //--- #include <Trade\Trade.mqh> #include <Trade\SymbolInfo.mqh> #include <Trade\PositionInfo.mqh> #include <Trade\AccountInfo.mqh> //+------------------------------------------------------------------+ //| ENUM_LOT_RISK | //+------------------------------------------------------------------+ enum LotMax { Lot= 0 , // Lots Lotx2= 1 , // Lots*2 }; //--- input LotMax InpLotRisk =Lotx2; // Lots,- Lots*2 input double InpLots = 0.01 ; // Lots input int InpMACDOpenLevel = 3 ; // MACD open level (in pips) input int InpMACDCloseLevel= 2 ; // MACD close level (in pips) input int InpMATrendPeriod = 26 ; // MA trend period //--- int ExtTimeOut= 10 ; // time out in seconds between trade operations //+------------------------------------------------------------------+ //| MACD Sample expert class | //+------------------------------------------------------------------+ class CSampleExpert { protected : 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 //--- indicators int m_handle_macd; // MACD indicator handle int m_handle_ema; // moving average indicator handle //--- indicator buffers double m_buff_MACD_main[]; // MACD indicator main buffer double m_buff_MACD_signal[]; // MACD indicator signal buffer double m_buff_EMA[]; // EMA indicator buffer //--- indicator data for processing double m_macd_current; double m_macd_previous; double m_signal_current; double m_signal_previous; double m_ema_current; double m_ema_previous; //--- double m_macd_open_level; double m_macd_close_level; datetime ExtPrevBars; // "0" -> D'1970.01.01 00:00'; public : CSampleExpert( void ); ~CSampleExpert( void ); bool Init( void ); void Deinit( void ); bool Processing( void ); double OptimizedBuy( void ); double OptimizedSell( void ); protected : bool InitIndicators( void ); bool LongOpened( void ); bool ShortOpened( void ); }; //--- global expert CSampleExpert ExtExpert; //+------------------------------------------------------------------+ //| Constructor | //+------------------------------------------------------------------+ CSampleExpert::CSampleExpert( void ) : m_adjusted_point( 0 ), m_handle_macd( INVALID_HANDLE ), m_handle_ema( INVALID_HANDLE ), m_macd_current( 0 ), m_macd_previous( 0 ), m_signal_current( 0 ), m_signal_previous( 0 ), m_ema_current( 0 ), m_ema_previous( 0 ), m_macd_open_level( 0 ), m_macd_close_level( 0 ), ExtPrevBars( 0 ) { ArraySetAsSeries (m_buff_MACD_main, true ); ArraySetAsSeries (m_buff_MACD_signal, true ); ArraySetAsSeries (m_buff_EMA, true ); } //+------------------------------------------------------------------+ //| Destructor | //+------------------------------------------------------------------+ CSampleExpert::~CSampleExpert( void ) { } //+------------------------------------------------------------------+ //| Calculate optimal lot size | //+------------------------------------------------------------------+ double CSampleExpert::OptimizedBuy( void ) { double PROFIT_BUY= 0.00 ; for ( int i= PositionsTotal ()- 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=InpLots; double ab=PROFIT_BUY; switch (InpLotRisk) { case Lot: Lots=InpLots; break ; case Lotx2: if (ab> 0 && ab<= 1 ) Lots=InpLots* 2 ; if (ab> 1 && ab<= 2 ) Lots=InpLots* 4 ; if (ab> 2 && ab<= 3 ) Lots=InpLots* 8 ; if (ab> 3 ) Lots=InpLots* 16 ; break ; } return (Lots); } //+------------------------------------------------------------------+ //| Calculate optimal lot size | //+------------------------------------------------------------------+ double CSampleExpert::OptimizedSell( void ) { double PROFIT_SELL= 0.00 ; for ( int i= PositionsTotal ()- 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=InpLots; double ab=PROFIT_SELL; switch (InpLotRisk) { case Lot: Lots=InpLots; break ; case Lotx2: if (ab> 0 && ab<= 1 ) Lots=InpLots* 2 ; if (ab> 1 && ab<= 2 ) Lots=InpLots* 4 ; if (ab> 2 && ab<= 3 ) Lots=InpLots* 8 ; if (ab> 3 ) Lots=InpLots* 16 ; break ; } return (Lots); } //+------------------------------------------------------------------+ //| Initialization and checking for input parameters | //+------------------------------------------------------------------+ bool CSampleExpert::Init( void ) { //--- 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_macd_open_level =InpMACDOpenLevel*m_adjusted_point; m_macd_close_level=InpMACDCloseLevel*m_adjusted_point; //--- set default deviation for trading in adjusted points m_trade.SetDeviationInPoints( 3 *digits_adjust); //--- if (!InitIndicators()) return ( false ); //--- succeed return ( true ); } //+------------------------------------------------------------------+ //| Initialization of the indicators | //+------------------------------------------------------------------+ bool CSampleExpert::InitIndicators( void ) { //--- create MACD indicator if (m_handle_macd== INVALID_HANDLE ) if ((m_handle_macd= iMACD ( NULL , 0 , 12 , 26 , 9 , PRICE_CLOSE ))== INVALID_HANDLE ) { printf ( "Error creating MACD indicator" ); return ( false ); } //--- create EMA indicator and add it to collection if (m_handle_ema== INVALID_HANDLE ) if ((m_handle_ema= iMA ( NULL , 0 ,InpMATrendPeriod, 0 , MODE_EMA , PRICE_CLOSE ))== INVALID_HANDLE ) { printf ( "Error creating EMA indicator" ); return ( false ); } //--- succeed return ( true ); } //+------------------------------------------------------------------+ //| Check for long position opening | //+------------------------------------------------------------------+ bool CSampleExpert::LongOpened( void ) { bool res= false ; //--- check for long position (BUY) possibility if (m_macd_current< 0 ) if (m_macd_current>m_signal_current && m_macd_previous<m_signal_previous) if ( MathAbs (m_macd_current)>(m_macd_open_level) && m_ema_current>m_ema_previous) { 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); } } //--- in any case we must exit from expert res= true ; } //--- result return (res); } //+------------------------------------------------------------------+ //| Check for short position opening | //+------------------------------------------------------------------+ bool CSampleExpert::ShortOpened( void ) { bool res= false ; //--- check for short position (SELL) possibility if (m_macd_current> 0 ) if (m_macd_current<m_signal_current && m_macd_previous>m_signal_previous) if (m_macd_current>(m_macd_open_level) && m_ema_current<m_ema_previous) { 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); } } //--- in any case we must exit from expert res= true ; } //--- result return (res); } //+------------------------------------------------------------------+ //| main function returns true if any position processed | //+------------------------------------------------------------------+ bool CSampleExpert::Processing( void ) { //--- we work only at the time of the birth of new bar datetime time_0= iTime (m_symbol.Name(), Period (), 0 ); if (time_0==ExtPrevBars) return ( false ); ExtPrevBars=time_0; if (!m_symbol.RefreshRates()) { ExtPrevBars= 0 ; return ( false ); } //--- refresh indicators if ( BarsCalculated (m_handle_macd)< 2 || BarsCalculated (m_handle_ema)< 2 ) return ( false ); if ( CopyBuffer (m_handle_macd, 0 , 0 , 2 ,m_buff_MACD_main) != 2 || CopyBuffer (m_handle_macd, 1 , 0 , 2 ,m_buff_MACD_signal)!= 2 || CopyBuffer (m_handle_ema, 0 , 0 , 2 ,m_buff_EMA) != 2 ) { ExtPrevBars= 0 ; return ( false ); } // m_indicators.Refresh(); //--- to simplify the coding and speed up access //--- data are put into internal variables m_macd_current =m_buff_MACD_main[ 0 ]; m_macd_previous =m_buff_MACD_main[ 1 ]; m_signal_current =m_buff_MACD_signal[ 0 ]; m_signal_previous=m_buff_MACD_signal[ 1 ]; m_ema_current =m_buff_EMA[ 0 ]; m_ema_previous =m_buff_EMA[ 1 ]; //--- it is important to enter the market correctly, //--- but it is more important to exit it correctly... //--- first check if position exists - try to select it //--- check for long position (BUY) possibility if (LongOpened()) return ( true ); //--- check for short position (SELL) possibility if (ShortOpened()) return ( true ); //--- exit without position processing return ( false ); } //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit ( void ) { //--- create all necessary objects if (!ExtExpert.Init()) return ( INIT_FAILED ); //--- secceed return ( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Expert new tick handling function | //+------------------------------------------------------------------+ void OnTick ( void ) { 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 *InpMATrendPeriod) { //--- change limit time by timeout in seconds if processed if (ExtExpert.Processing()) limit_time= TimeCurrent ()+ExtTimeOut; } } } //+------------------------------------------------------------------+ ファイル: Vitaly_Murlenko.mq5 29 kb Shoker 2021.11.21 03:12 #269 Georgiy Merts #:すべては、最大値を定義する順番による。古典的なフラクタルは、5本の棒があり、真ん中の棒が他の棒より上(下)になっています。しかし、この絵では、高値はフラクタルに従って描かれていない。では、クラシックフラクタルで現在のチャートを取り、線を引いてみます。少し待ってください。これです。現在のユーロドルのチャート、見てください。高値と安値をフラクタルで表示すると、チャート上に2本のトレンドラインがあるが、いずれもすでに突破されており、その構築の瞬間は矢印で示されている。貫通する瞬間に線が途切れる。昨日の 8時方向と18時方向のフラクタルに、3本目の下降線が引かれます。価格が15時間足の安値を下回ったらすぐに描画する必要があります。 この例では、赤と青のトレンドラインは、価格がまさにこのトレンドラインを突き抜ける±のレベルにあるときに引かれています。これでいくら(pipsまたは波動率で)稼げるのか? 削除済み 2021.11.21 03:48 #270 SanAlex #:では、始めます。次の位置でロットアップを追加(黄色で掘ったところと変えたところ)。 これは、結果を閉じることなく ロットを開いて増やすのはもちろん良いことですが、何とかして利益を集めなければなりません。 1.私たちは、閉鎖を追加する必要があり、=例えば、利益を閉じて購入すると - そして、例えば、利益が来るまで、それらをハングアップさせるために販売。 1...202122232425262728293031323334...41 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
というアドバイザーを想像してください。
1年前にも言ったが、年率50%といえばまだ稼げている。
ダニで
同じことを何ヶ月も続けて、汗をかかないようにする。
リラックスして、自信を持って、目に見える効果を発揮してください。
;)
それは私です))
規範
ノルプ
それはなぜでしょうか?フォーラムではいつも何かが飛び出してきて、それを別の方向に持っていく人がいるような気がするのですが?
は、ダニにできる。
何カ月も同じことをやって、汗をかかない。
穏やかに、自信たっぷりに、そしてたくましく。
;)
まだ考えていません、私のExpert Advisorは、その早さを確認するために1年間ぶら下がっています。ポンドでは、あらゆるトレンドに耐えることができました。まるで、取引を開始するタイミングがわかっているかのようです。ドローダウンは1.47%でした。
まだ何も考えていません、お粗末さを確認するために1年間吊るしてあるのです。ポンドでは、あらゆるトレンドに耐えることができました。まるで、取引を開始するタイミングを事前に知っているかのようです。ドローダウンは1.47%でした。
ロットを10倍にする-利益が10倍になる
ロットを10倍にする-利益が10倍になる
ワババイ、なんて賢い子なんだろう))他の選択肢もあるのでは?
効果的なアドバイザーの書き方 -続きはこちら
では、何から始めればいいのか。
1.EAに最適なレバレッジは何ですか?- 100を超えないと思います。
2.EAにとって最も重要な機能はロットだと思います。これが、私たちが利益を得るための機能です。
3.----
4.----
など----
EAを効果的に機能させるために、他にどのような機能が必要なのか?
効果的なアドバイザーを書く-継続する。
では、どこから始めればよいのでしょうか。
1.アドバイザーにとってどのレバレッジが優れているか。 -100以下だと思います
2.アドバイザーにとって重要な機能-私が理解しているように、たくさんあります。この機能からも利益を得ることができます。
3. ----
4. ----
等--------
エキスパートアドバイザーが効果を発揮するには、他にどのような機能が必要ですか?
それから始めましょう-よろしければ-
次の位置でロットの増加を追加しました(私が掘って変更した黄色)
すべては、最大値を定義する順番による。古典的なフラクタルは、5本の棒があり、真ん中の棒が他の棒より上(下)になっています。しかし、この絵では、高値はフラクタルに従って描かれていない。
では、クラシックフラクタルで現在のチャートを取り、線を引いてみます。少し待ってください。
これです。現在のユーロドルのチャート、見てください。高値と安値をフラクタルで表示すると、チャート上に2本のトレンドラインがあるが、いずれもすでに突破されており、その構築の瞬間は矢印で示されている。貫通する瞬間に線が途切れる。昨日の 8時方向と18時方向のフラクタルに、3本目の下降線が引かれます。価格が15時間足の安値を下回ったらすぐに描画する必要があります。
この例では、赤と青のトレンドラインは、価格がまさにこのトレンドラインを突き抜ける±のレベルにあるときに引かれています。これでいくら(pipsまたは波動率で)稼げるのか?
では、始めます。
次の位置でロットアップを追加(黄色で掘ったところと変えたところ)。
これは、結果を閉じることなく
ロットを開いて増やすのはもちろん良いことですが、何とかして利益を集めなければなりません。
1.私たちは、閉鎖を追加する必要があり、=例えば、利益を閉じて購入すると - そして、例えば、利益が来るまで、それらをハングアップさせるために販売。