閉じる問題、助けてください - ページ 4 123456789 新しいコメント Ben 2010.03.15 12:34 #31 Ais wrote>> でも、利益が出たときに注文を閉じる条件は必要です。 リニューアルした関数「iSignalClose 」をご覧ください。https://www.mql5.com/en/forum/124521/page2。 今はもちろん仮想SLの条件です。 でも、仮想TPの条件は必要です。 ご返信お待ちしております。:) Aisさん、こんにちは。 わあ、素晴らしい作品ですね。ありがとうございます。 申し訳ありませんが、私は去らなければなりませんでした。日曜日で、湖での家族の時間、それから夕食でした。 先ほどプログラムを開いて、あなたが行ったすべての作業を確認しました。 なんとお礼を申し上げたらよいのでしょうか。私が吸収するには、少し時間がかかるかもしれません。 TPが議論されていないという考えは、私がこれを一度に1つの文や関数にまとめるということでした。 ステートメントや関数を一つずつ組み立てていました。プログラムの組み立て方を少しずつ理解していくだけです。 あなたの考え方は、プログラムを短くし、プロフェッショナルなものです。共有してくれてありがとうございます。 TPとSLはもう少し複雑なものになりそうです。私が述べたように、私はゆっくりとこれを学んでいます。 次にどのような機能を行うべきかはわかりません。もしよろしければ、大局的なことをお知らせします。 1.このプログラムで、私はより多くのポジションを追加することを検討していました。最初のポジションのようなものです。 すでにプログラムに入っているポジション、そしてポジション2、3、4、5。 注:5つ以上のポジションでバックテストしたことはありません。 2.2. 新しいポジションでは、SLをそれぞれ調整する必要があります。SLがヒットすると、すべてのポジションが清算されます。 は清算されます。 3.3. 各追加ポジションは、前のポジションの 1/2 ATR となります。買いは1/2 ATR大きくなります。 一方、売りは1/2 ATR低くなります。 4.4. SLは、ポジションを追加するたびに、1/2 ATRで調整されます。 注:トレンドが順調に推移し、価格が1/2ATRを超えたときがあります。 そして、これ以上ポジションを持たないことを望みます。このトレンドの中で、価格が過去10本のバーの最安値が最後のSLより高くなるポイントに到達することがあります。この場合、SLは過去10本の最安値で調整されます。そして、安値がチャートの外に移動した後、それに応じて調整されます。ご覧の通り、SLはトレーリングストップではありません。しかし、ATR*2によって調整され、その後、過去10日間の最安値によって調整されます。(この状況は買いです。売りはその逆です)。 これは、私が手作業でバックテストしたシステムです。 私はコードやTPを使ったバックテストをしたことがありません。近い将来、価格パターンを調べることができるかもしれません。 価格パターンを調べることができるかもしれません。しかし、今のところ、私は利益を走らせ、多くの小さな損失を出しています。 私は、洗練されたものにしようとしない方がいいと言われました。小さなプログラムで学び と言われました。 だから、私はそれを実行しようとしている。次のステップは、追加ポジションでのピボットの仕方を学ぶことだと思います。 追加のポジションでピボットする方法。それからSLを調整する方法を学びます。 資金管理は最後までおあずけかもしれませんね。でも、とても重要だ。もし、私が間違った方向へ進んでいると思われるなら、どんな意見でも結構です。 どんな意見でもありがたいです。 今までやってきたことが、追加のステップによって妨げられることがないように願っています。 ただ、どのステップを最初に行うべきか、あるいはその後に何を行うべきかがわかりませんでした。 ありがとうございました。 あなたの改良に感心しています。また、質問させていただきますね。あなたが教えてくれたことで、学ぶことがたくさんあります。 乾杯 AIRAT SAFIN 2010.03.15 13:12 #32 ハックルベリーさん 最高の感謝です! " あいさん うわー素晴らしい出来 です。 " 本当に、本当にありが とうございます。 今、私は計算を改善するつもりです。 その通り、私は新しいバーのみでATRを計算したいのです。 そうすれば、テストと最適化をより速く行うことができます。 そして、私の意図は、あなたが簡単にプログラムを変更することができるようにすることです。 プログラムを拡張し、新しい機能を追加する場合でも。 この構造は、特に複雑さを減らすために作られました。 近い将来、大規模なプログラムにも同じ構造を採用するつもりです。 取引戦略については、私はほんの少ししか勉強していません。 しかし、多くのストラテジーがあり、また、機能するはずです。 このような構造を理解するための勉強をお手伝いできればと思います。 追伸:今後、私はバーチャルテイクとストップのみを使用する予定です。 AIRAT SAFIN 2010.03.15 22:38 #33 ////////////////////////////////////////////////////////////////////< 1> // < Program : Property > //< > // #define 1 " " //< > // #define 2 " " //< > // </Program : Property > //< > // //< > // < Program : Content > //< > // //< > // < Structure 16 elements in 4 domains > //< > // < 1. Data 7 elements in 2 domains /> //< > // < 2. Code 9 elements in 2 domains /> //< > // </Structure 16 elements in 4 domains > //< > // //< > // < 1. Data 7 = 4 i 3 d - s > //< > // < 1.1. Input 7 = 4 i 3 d - s /> //< > // < 1.2. Buffer - = - i - d - s /> //< > // </1. Data 7 = 4 i 3 d - s > //< > // //< > // < 2. Code 9 / - i 82 l 4 o > //< > // < 2.1. Interface 6 / - i 71 l 4 o /> //< > // < 2.2. Special 3 / - i 11 l - o /> //< > // </2. Code 9 / - i 82 l 4 o > //< > // //< > // </Program : Content > //< > ////////////////////////////////////////////////////////////////////< 2> // < 1.1. Data : Input > //< > // //< > // < 1.1. Input 7 = 4 i 3 d - s > //< > // < 1. Strategy 4 = 2 i 2 d - s /> //< > // < 2. Trading 3 = 2 i 1 d - s /> //< > // </1.1. Input 7 = 4 i 3 d - s > //< > // //< > // < 1. Strategy 4 >=========================================//< > int iBaseLag = 20 ; //< > int iBaseBar = 1 ; //< > double dFactorTP = 2.0 ; //< > double dFactorSL = 2.0 ; //< > // </ 1. Strategy 4 >=========================================//< > // //< > // < 2. Trading 3 >==========================================//< > int iSlippage = 1 ; //< > int iMagic = 1 ; //< > double dLots = 0.1 ; //< > // </ 2. Trading 3 >==========================================//< > // //< > // //< > // //< > // </1.1. Data : Input > //< > AIRAT SAFIN 2010.03.15 22:38 #34 ////////////////////////////////////////////////////////////////////< 3> // < 1.2. Data : Buffer > //< > // //< > // < 1.2. Buffer - = - i - d - s > //< > // </1.2. Buffer - = - i - d - s > //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // </1.2. Data : Buffer > //< > ////////////////////////////////////////////////////////////////////< 4> // < 2.1. Code : Interface > //< > // //< > // < 2.1. Interface 6 / - i 71 l 4 o > //< > // < 1. iNewBar - i 4 l 1 o /> //< > // < 2. iSignalOpen - i 15 l 1 o /> //< > // < 3. iSignalClose - i 15 l 1 o /> //< > // < 4. iGetTicket - i 7 l 1 o /> //< > // < 5. iTryOpen - i 15 l - o /> //< > // < 6. iTryClose - i 15 l - o /> //< > // </2.1. Interface 6 / - i 71 l 4 o > //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // </2.1. Code : Interface > //< > AIRAT SAFIN 2010.03.15 22:38 #35 ////////////////////////////////////////////////////////////////////< 5> // < 2.1.1. Code : Interface : iNewBar > //< > int iNewBar () // - i 4 l 1 o //< > { //< > static int iTime_0 = 0 ; //< > // //< > if ( iTime_0 < iTime ( 0 , 0 , 0 ) ) //< > { iTime_0 = iTime ( 0 , 0 , 0 ) ; return ( TRUE ) ; } //< > else { return ( EMPTY ) ; } //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > } //< > // </2.1.1. Code : Interface : iNewBar > //< > ////////////////////////////////////////////////////////////////////< 6> // < 2.1.2. Code : Interface : iSignalOpen > //< > int iSignalOpen () // - i 15 l 1 o //< > { //< > static int iFirstRun = 1 ; //< > if ( ( iNewBar () == TRUE ) || ( iFirstRun == 1 ) ) //< > { iFirstRun = 0 ; //< > int iIndexH = iHighest ( 0 , 0 , MODE_HIGH , //< > iBaseLag , iBaseBar ) ; //< > int iIndexL = iLowest ( 0 , 0 , MODE_LOW , //< > iBaseLag , iBaseBar ) ; //< > static double dHigh ; dHigh = High [ iIndexH ] ; //< > static double dLow ; dLow = Low [ iIndexL ] ; //< > } // if //< > // //< > double dAsk = MarketInfo ( Symbol () , MODE_ASK ) ; //< > if ( dAsk > dHigh ) return ( OP_BUY ) ; //< > // //< > double dBid = MarketInfo ( Symbol () , MODE_BID ) ; //< > if ( dBid < dLow ) return ( OP_SELL ) ; //< > // //< > return ( EMPTY ) ; //< > } //< > // </2.1.2. Code : Interface : iSignalOpen > //< > AIRAT SAFIN 2010.03.15 22:38 #36 ////////////////////////////////////////////////////////////////////< 7> // < 2.1.3. Code : Interface : iSignalClose > //< > int iSignalClose () // - i 15 l 1 o //< > { //< > static int iFirstRun = 1 ; //< > if ( ( iNewBar () == TRUE ) || ( iFirstRun == 1 ) ) //< > { iFirstRun = 0 ; //< > static double dATR , dProfit , dLoss ; //< > dATR = iATR ( 0 , 0 , iBaseLag , iBaseBar ) ; //< > } // if //< > // //< > double dDelta = OrderOpenPrice () - OrderClosePrice () ; //< > // //< > if ( OrderType () == OP_BUY ) //< > { dProfit = -dDelta ; dLoss = dDelta ; } //< > else if ( OrderType () == OP_SELL ) //< > { dProfit = dDelta ; dLoss = -dDelta ; } //< > else return ( EMPTY ) ; //< > // //< > if ( dProfit > dATR * dFactorTP ) return ( TRUE ) ; //< > if ( dLoss > dATR * dFactorSL ) return ( TRUE ) ; //< > return ( EMPTY ) ; //< > } //< > // </2.1.3. Code : Interface : iSignalClose > //< > ////////////////////////////////////////////////////////////////////< 8> // < 2.1.4. Code : Interface : iGetTicket > //< > int iGetTicket () // - i 7 l 1 o //< > { //< > for ( int i = OrdersTotal () - 1 ; i >= 0 ; i -- ) //< > { //< > if ( OrderSelect ( i , SELECT_BY_POS ) == TRUE ) //< > if ( OrderMagicNumber () == iMagic ) //< > return ( OrderTicket () ) ; //< > } // for //< > return ( EMPTY ) ; //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > } //< > // </2.1.4. Code : Interface : iGetTicket > //< > AIRAT SAFIN 2010.03.15 22:39 #37 ////////////////////////////////////////////////////////////////////< 9> // < 2.1.5. Code : Interface : iTryOpen > //< > int iTryOpen () // - i 15 l - o //< > { //< > int iCommand = iSignalOpen () ; //< > if ( iCommand == EMPTY ) return ; //< > if ( iCommand == OP_BUY ) //< > { string sType = "Buy" ; int iColor = Blue ; } //< > else { sType = "Sell" ; iColor = Red ; } //< > // //< > if ( iCommand == OP_BUY ) int iMode = MODE_ASK ; //< > else iMode = MODE_BID ; //< > double dPrice = MarketInfo ( Symbol () , iMode ) ; //< > // //< > OrderSend ( Symbol () , iCommand , dLots , //< > NormalizeDouble ( dPrice , Digits ) , //< > iSlippage , 0 , 0 , "" , iMagic , 0 , iColor ) ; //< > // //< > int iTrap = GetLastError () ; //< > if ( iTrap == 0 ) //< > Alert ( sType , " Was a Big Success" ) ; //< > else Alert ( sType , " open exception " , iTrap ) ; //< > } //< > // </2.1.5. Code : Interface : iTryOpen > //< > ////////////////////////////////////////////////////////////////////< 10> // < 2.1.6. Code : Interface : iTryClose > //< > int iTryClose () // - i 15 l - o //< > { //< > int iCommand = iSignalClose () ; //< > if ( iCommand == EMPTY ) return ; //< > if ( OrderType () == OP_BUY ) //< > { string sType = "Buy" ; int iColor = Red ; } //< > else { sType = "Sell" ; iColor = Blue ; } //< > // //< > if ( OrderProfit () > 0 ) string sAct = "Take" ; //< > else sAct = "Stop" ; //< > double dPrice = OrderClosePrice () ; //< > // //< > OrderClose ( OrderTicket () , OrderLots () , //< > NormalizeDouble ( dPrice , Digits ) , //< > iSlippage , iColor ) ; //< > // //< > int iTrap = GetLastError () ; //< > if ( iTrap == 0 ) //< > Alert ( sType , " closed with Hard " , sAct ) ; //< > else Alert ( sType , " close exception " , iTrap ) ; //< > } //< > // </2.1.6. Code : Interface : iTryClose > //< > AIRAT SAFIN 2010.03.15 22:39 #38 ////////////////////////////////////////////////////////////////////< 11> // < 2.2. Code : Special > //< > // //< > // < 2.2. Special 3 / - i 11 l - o > //< > // < 1. init - i 1 l - o /> //< > // < 2. deinit - i 1 l - o /> //< > // < 3. start - i 9 l - o /> //< > // </2.2. Special 3 / - i 11 l - o > //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // </2.2. Code : Special > //< > ////////////////////////////////////////////////////////////////////< 12> // < 2.2.1. Code : Special : Init > //< > int init () // - i 1 l - o //< > { //< > Alert ( "" , "Start " , UninitializeReason () ) ; //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > } //< > // </2.2.1. Code : Special : Init > //< > AIRAT SAFIN 2010.03.15 22:39 #39 ////////////////////////////////////////////////////////////////////< 13> // < 2.2.2. Code : Special : Deinit > //< > int deinit () // - i 1 l - o //< > { //< > Alert ( "" , "Stop " , UninitializeReason () ) ; //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > } //< > // </2.2.2. Code : Special : Deinit > //< > ////////////////////////////////////////////////////////////////////< 14> // < 2.2.3. Code : Special : Start > //< > int start () // - i 9 l - o //< > { //< > // < 2.2.3.1. History data inspection 4 >`````````````````````````//< > static int iTrigger = 0 ; if ( iTrigger == 0 ) { //< > if ( ( iTime ( 0 , 0 , 0 ) == 0 ) //< > || ( iBars ( 0 , 0 ) < iBaseLag + iBaseBar ) ) //< > return ; else iTrigger = 1 ; } //< > // </2.2.3.1. History data inspection 4 >`````````````````````````//< > // //< > // < 2.2.3.2. Main routine 3 >````````````````````````````````````//< > int iTicket = iGetTicket () ; //< > // //< > if ( iTicket < 0 ) iTryOpen () ; //< > else iTryClose () ; //< > // </2.2.3.2. Main routine 3 >````````````````````````````````````//< > // //< > // < 2.2.3.3. Exception handler 2 >```````````````````````````````//< > int iTrap = GetLastError () ; //< > if ( iTrap > 0 ) Alert ( "Exception " , iTrap ) ; //< > // </2.2.3.3. Exception handler 2 >```````````````````````````````//< > } //< > // </2.2.3. Code : Special : Start > //< > ////////////////////////////////////////////////////////////////////< 0> AIRAT SAFIN 2010.03.15 22:39 #40 Adjust MetaEditor window to see 25 lines x 80 columns. Use <Page Up> and <Page Down> to scroll the content. Last edit: 2010.03.16 18:44 State: Ready ファイル: 1_24.mq4 27 kb 123456789 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
でも、利益が出たときに注文を閉じる条件は必要です。
リニューアルした関数「iSignalClose 」をご覧ください。https://www.mql5.com/en/forum/124521/page2。
今はもちろん仮想SLの条件です。
でも、仮想TPの条件は必要です。
ご返信お待ちしております。
:)
Aisさん、こんにちは。わあ、素晴らしい作品ですね。ありがとうございます。
申し訳ありませんが、私は去らなければなりませんでした。日曜日で、湖での家族の時間、それから夕食でした。
先ほどプログラムを開いて、あなたが行ったすべての作業を確認しました。
なんとお礼を申し上げたらよいのでしょうか。私が吸収するには、少し時間がかかるかもしれません。
TPが議論されていないという考えは、私がこれを一度に1つの文や関数にまとめるということでした。
ステートメントや関数を一つずつ組み立てていました。プログラムの組み立て方を少しずつ理解していくだけです。
あなたの考え方は、プログラムを短くし、プロフェッショナルなものです。共有してくれてありがとうございます。
TPとSLはもう少し複雑なものになりそうです。私が述べたように、私はゆっくりとこれを学んでいます。
次にどのような機能を行うべきかはわかりません。もしよろしければ、大局的なことをお知らせします。
1.このプログラムで、私はより多くのポジションを追加することを検討していました。最初のポジションのようなものです。
すでにプログラムに入っているポジション、そしてポジション2、3、4、5。
注:5つ以上のポジションでバックテストしたことはありません。
2.2. 新しいポジションでは、SLをそれぞれ調整する必要があります。SLがヒットすると、すべてのポジションが清算されます。
は清算されます。
3.3. 各追加ポジションは、前のポジションの 1/2 ATR となります。買いは1/2 ATR大きくなります。
一方、売りは1/2 ATR低くなります。
4.4. SLは、ポジションを追加するたびに、1/2 ATRで調整されます。
注:トレンドが順調に推移し、価格が1/2ATRを超えたときがあります。
そして、これ以上ポジションを持たないことを望みます。このトレンドの中で、価格が過去10本のバーの最安値が最後のSLより高くなるポイントに到達することがあります。この場合、SLは過去10本の最安値で調整されます。そして、安値がチャートの外に移動した後、それに応じて調整されます。ご覧の通り、SLはトレーリングストップではありません。しかし、ATR*2によって調整され、その後、過去10日間の最安値によって調整されます。(この状況は買いです。売りはその逆です)。
これは、私が手作業でバックテストしたシステムです。
私はコードやTPを使ったバックテストをしたことがありません。近い将来、価格パターンを調べることができるかもしれません。
価格パターンを調べることができるかもしれません。しかし、今のところ、私は利益を走らせ、多くの小さな損失を出しています。
私は、洗練されたものにしようとしない方がいいと言われました。小さなプログラムで学び
と言われました。 だから、私はそれを実行しようとしている。次のステップは、追加ポジションでのピボットの仕方を学ぶことだと思います。
追加のポジションでピボットする方法。それからSLを調整する方法を学びます。
資金管理は最後までおあずけかもしれませんね。でも、とても重要だ。もし、私が間違った方向へ進んでいると思われるなら、どんな意見でも結構です。
どんな意見でもありがたいです。
今までやってきたことが、追加のステップによって妨げられることがないように願っています。
ただ、どのステップを最初に行うべきか、あるいはその後に何を行うべきかがわかりませんでした。
ありがとうございました。
あなたの改良に感心しています。また、質問させていただきますね。あなたが教えてくれたことで、学ぶことがたくさんあります。
乾杯
ハックルベリーさん
最高の感謝です!
"
あいさん
うわー素晴らしい出来 です。
"
本当に、本当にありが とうございます。
今、私は計算を改善するつもりです。
その通り、私は新しいバーのみでATRを計算したいのです。
そうすれば、テストと最適化をより速く行うことができます。
そして、私の意図は、あなたが簡単にプログラムを変更することができるようにすることです。
プログラムを拡張し、新しい機能を追加する場合でも。
この構造は、特に複雑さを減らすために作られました。
近い将来、大規模なプログラムにも同じ構造を採用するつもりです。
取引戦略については、私はほんの少ししか勉強していません。
しかし、多くのストラテジーがあり、また、機能するはずです。
このような構造を理解するための勉強をお手伝いできればと思います。
追伸:今後、私はバーチャルテイクとストップのみを使用する予定です。
////////////////////////////////////////////////////////////////////< 1> // < Program : Property > //< > // #define 1 " " //< > // #define 2 " " //< > // </Program : Property > //< > // //< > // < Program : Content > //< > // //< > // < Structure 16 elements in 4 domains > //< > // < 1. Data 7 elements in 2 domains /> //< > // < 2. Code 9 elements in 2 domains /> //< > // </Structure 16 elements in 4 domains > //< > // //< > // < 1. Data 7 = 4 i 3 d - s > //< > // < 1.1. Input 7 = 4 i 3 d - s /> //< > // < 1.2. Buffer - = - i - d - s /> //< > // </1. Data 7 = 4 i 3 d - s > //< > // //< > // < 2. Code 9 / - i 82 l 4 o > //< > // < 2.1. Interface 6 / - i 71 l 4 o /> //< > // < 2.2. Special 3 / - i 11 l - o /> //< > // </2. Code 9 / - i 82 l 4 o > //< > // //< > // </Program : Content > //< >
////////////////////////////////////////////////////////////////////< 2> // < 1.1. Data : Input > //< > // //< > // < 1.1. Input 7 = 4 i 3 d - s > //< > // < 1. Strategy 4 = 2 i 2 d - s /> //< > // < 2. Trading 3 = 2 i 1 d - s /> //< > // </1.1. Input 7 = 4 i 3 d - s > //< > // //< > // < 1. Strategy 4 >=========================================//< > int iBaseLag = 20 ; //< > int iBaseBar = 1 ; //< > double dFactorTP = 2.0 ; //< > double dFactorSL = 2.0 ; //< > // </ 1. Strategy 4 >=========================================//< > // //< > // < 2. Trading 3 >==========================================//< > int iSlippage = 1 ; //< > int iMagic = 1 ; //< > double dLots = 0.1 ; //< > // </ 2. Trading 3 >==========================================//< > // //< > // //< > // //< > // </1.1. Data : Input > //< >
////////////////////////////////////////////////////////////////////< 3> // < 1.2. Data : Buffer > //< > // //< > // < 1.2. Buffer - = - i - d - s > //< > // </1.2. Buffer - = - i - d - s > //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // </1.2. Data : Buffer > //< >
////////////////////////////////////////////////////////////////////< 4> // < 2.1. Code : Interface > //< > // //< > // < 2.1. Interface 6 / - i 71 l 4 o > //< > // < 1. iNewBar - i 4 l 1 o /> //< > // < 2. iSignalOpen - i 15 l 1 o /> //< > // < 3. iSignalClose - i 15 l 1 o /> //< > // < 4. iGetTicket - i 7 l 1 o /> //< > // < 5. iTryOpen - i 15 l - o /> //< > // < 6. iTryClose - i 15 l - o /> //< > // </2.1. Interface 6 / - i 71 l 4 o > //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // </2.1. Code : Interface > //< >
////////////////////////////////////////////////////////////////////< 5> // < 2.1.1. Code : Interface : iNewBar > //< > int iNewBar () // - i 4 l 1 o //< > { //< > static int iTime_0 = 0 ; //< > // //< > if ( iTime_0 < iTime ( 0 , 0 , 0 ) ) //< > { iTime_0 = iTime ( 0 , 0 , 0 ) ; return ( TRUE ) ; } //< > else { return ( EMPTY ) ; } //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > } //< > // </2.1.1. Code : Interface : iNewBar > //< >
////////////////////////////////////////////////////////////////////< 6> // < 2.1.2. Code : Interface : iSignalOpen > //< > int iSignalOpen () // - i 15 l 1 o //< > { //< > static int iFirstRun = 1 ; //< > if ( ( iNewBar () == TRUE ) || ( iFirstRun == 1 ) ) //< > { iFirstRun = 0 ; //< > int iIndexH = iHighest ( 0 , 0 , MODE_HIGH , //< > iBaseLag , iBaseBar ) ; //< > int iIndexL = iLowest ( 0 , 0 , MODE_LOW , //< > iBaseLag , iBaseBar ) ; //< > static double dHigh ; dHigh = High [ iIndexH ] ; //< > static double dLow ; dLow = Low [ iIndexL ] ; //< > } // if //< > // //< > double dAsk = MarketInfo ( Symbol () , MODE_ASK ) ; //< > if ( dAsk > dHigh ) return ( OP_BUY ) ; //< > // //< > double dBid = MarketInfo ( Symbol () , MODE_BID ) ; //< > if ( dBid < dLow ) return ( OP_SELL ) ; //< > // //< > return ( EMPTY ) ; //< > } //< > // </2.1.2. Code : Interface : iSignalOpen > //< >
////////////////////////////////////////////////////////////////////< 7> // < 2.1.3. Code : Interface : iSignalClose > //< > int iSignalClose () // - i 15 l 1 o //< > { //< > static int iFirstRun = 1 ; //< > if ( ( iNewBar () == TRUE ) || ( iFirstRun == 1 ) ) //< > { iFirstRun = 0 ; //< > static double dATR , dProfit , dLoss ; //< > dATR = iATR ( 0 , 0 , iBaseLag , iBaseBar ) ; //< > } // if //< > // //< > double dDelta = OrderOpenPrice () - OrderClosePrice () ; //< > // //< > if ( OrderType () == OP_BUY ) //< > { dProfit = -dDelta ; dLoss = dDelta ; } //< > else if ( OrderType () == OP_SELL ) //< > { dProfit = dDelta ; dLoss = -dDelta ; } //< > else return ( EMPTY ) ; //< > // //< > if ( dProfit > dATR * dFactorTP ) return ( TRUE ) ; //< > if ( dLoss > dATR * dFactorSL ) return ( TRUE ) ; //< > return ( EMPTY ) ; //< > } //< > // </2.1.3. Code : Interface : iSignalClose > //< >
////////////////////////////////////////////////////////////////////< 8> // < 2.1.4. Code : Interface : iGetTicket > //< > int iGetTicket () // - i 7 l 1 o //< > { //< > for ( int i = OrdersTotal () - 1 ; i >= 0 ; i -- ) //< > { //< > if ( OrderSelect ( i , SELECT_BY_POS ) == TRUE ) //< > if ( OrderMagicNumber () == iMagic ) //< > return ( OrderTicket () ) ; //< > } // for //< > return ( EMPTY ) ; //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > } //< > // </2.1.4. Code : Interface : iGetTicket > //< >
////////////////////////////////////////////////////////////////////< 9> // < 2.1.5. Code : Interface : iTryOpen > //< > int iTryOpen () // - i 15 l - o //< > { //< > int iCommand = iSignalOpen () ; //< > if ( iCommand == EMPTY ) return ; //< > if ( iCommand == OP_BUY ) //< > { string sType = "Buy" ; int iColor = Blue ; } //< > else { sType = "Sell" ; iColor = Red ; } //< > // //< > if ( iCommand == OP_BUY ) int iMode = MODE_ASK ; //< > else iMode = MODE_BID ; //< > double dPrice = MarketInfo ( Symbol () , iMode ) ; //< > // //< > OrderSend ( Symbol () , iCommand , dLots , //< > NormalizeDouble ( dPrice , Digits ) , //< > iSlippage , 0 , 0 , "" , iMagic , 0 , iColor ) ; //< > // //< > int iTrap = GetLastError () ; //< > if ( iTrap == 0 ) //< > Alert ( sType , " Was a Big Success" ) ; //< > else Alert ( sType , " open exception " , iTrap ) ; //< > } //< > // </2.1.5. Code : Interface : iTryOpen > //< >
////////////////////////////////////////////////////////////////////< 10> // < 2.1.6. Code : Interface : iTryClose > //< > int iTryClose () // - i 15 l - o //< > { //< > int iCommand = iSignalClose () ; //< > if ( iCommand == EMPTY ) return ; //< > if ( OrderType () == OP_BUY ) //< > { string sType = "Buy" ; int iColor = Red ; } //< > else { sType = "Sell" ; iColor = Blue ; } //< > // //< > if ( OrderProfit () > 0 ) string sAct = "Take" ; //< > else sAct = "Stop" ; //< > double dPrice = OrderClosePrice () ; //< > // //< > OrderClose ( OrderTicket () , OrderLots () , //< > NormalizeDouble ( dPrice , Digits ) , //< > iSlippage , iColor ) ; //< > // //< > int iTrap = GetLastError () ; //< > if ( iTrap == 0 ) //< > Alert ( sType , " closed with Hard " , sAct ) ; //< > else Alert ( sType , " close exception " , iTrap ) ; //< > } //< > // </2.1.6. Code : Interface : iTryClose > //< >
////////////////////////////////////////////////////////////////////< 11> // < 2.2. Code : Special > //< > // //< > // < 2.2. Special 3 / - i 11 l - o > //< > // < 1. init - i 1 l - o /> //< > // < 2. deinit - i 1 l - o /> //< > // < 3. start - i 9 l - o /> //< > // </2.2. Special 3 / - i 11 l - o > //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // </2.2. Code : Special > //< >
////////////////////////////////////////////////////////////////////< 12> // < 2.2.1. Code : Special : Init > //< > int init () // - i 1 l - o //< > { //< > Alert ( "" , "Start " , UninitializeReason () ) ; //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > } //< > // </2.2.1. Code : Special : Init > //< >
////////////////////////////////////////////////////////////////////< 13> // < 2.2.2. Code : Special : Deinit > //< > int deinit () // - i 1 l - o //< > { //< > Alert ( "" , "Stop " , UninitializeReason () ) ; //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > // //< > } //< > // </2.2.2. Code : Special : Deinit > //< >
////////////////////////////////////////////////////////////////////< 14> // < 2.2.3. Code : Special : Start > //< > int start () // - i 9 l - o //< > { //< > // < 2.2.3.1. History data inspection 4 >`````````````````````````//< > static int iTrigger = 0 ; if ( iTrigger == 0 ) { //< > if ( ( iTime ( 0 , 0 , 0 ) == 0 ) //< > || ( iBars ( 0 , 0 ) < iBaseLag + iBaseBar ) ) //< > return ; else iTrigger = 1 ; } //< > // </2.2.3.1. History data inspection 4 >`````````````````````````//< > // //< > // < 2.2.3.2. Main routine 3 >````````````````````````````````````//< > int iTicket = iGetTicket () ; //< > // //< > if ( iTicket < 0 ) iTryOpen () ; //< > else iTryClose () ; //< > // </2.2.3.2. Main routine 3 >````````````````````````````````````//< > // //< > // < 2.2.3.3. Exception handler 2 >```````````````````````````````//< > int iTrap = GetLastError () ; //< > if ( iTrap > 0 ) Alert ( "Exception " , iTrap ) ; //< > // </2.2.3.3. Exception handler 2 >```````````````````````````````//< > } //< > // </2.2.3. Code : Special : Start > //< > ////////////////////////////////////////////////////////////////////< 0>
Adjust MetaEditor window to see 25 lines x 80 columns. Use <Page Up> and <Page Down> to scroll the content. Last edit: 2010.03.16 18:44 State: Ready