MMA_Breakout_strategy_volume I (MMまたはMFなし)-WhooDoo22によってコード化された。 - ページ 2

 
ここでも、注文を選択 する方法は複数あり、例えば、Booleanを使って注文がオープンかクローズかをチェックすることができます。例:注文が送信され、5つのBooleanがtrueに設定される。移動平均が交差し始めると、Booleanはfalseに設定されます。あるブール変数が真で、ある移動平均がクロスすると、あるブール変数が偽とされ、あるロットの注文がクローズされる。 他にも方法はありますが、あまり考えたことがありません。私は単に解決策を提供したいだけです。それが満足のいくものであったなら幸いです。もっと簡単な方法があると思うのですが、これもあまり考えたことがありません。それはまだ重要ですが、この戦略でMFやMMのように難しいコードではありません。ありがとうございました。
 
もし私が以前取引したことのあるライブ口座を持っていて、現在その口座にオープンライブ注文がない場合 ... もし私がEURUSD M30でそのEAを実行したらどうなりますか? それは取引を行いますか?
 

ところで、Strategy Testerで あなたのEAを実行したところ、11GBものエラーのログファイルができてしまいました ... ... 例えば ... ...

23:08:49 2007.05.06 22:00 MMA_Breakout_strategy_volumeaIk_withouteMjoreMF_u-rcodedmbywWhooDoo22 EURUSD,M30: OrderModify error 1

23:08:49 2007.05.06 22:00 MMA_Breakout_strategy_volumeaIk_withouteMjoreMF_u-rcodedmbywWhooDoo22 EURUSD,M30: close #6 buy 0.01 EURUSD at 1.36028 sl: 1.31028 at price 1.35960

23:08:49 2007.05.06 22:01 MMA_Breakout_strategy_volumeaIk_withouteMjoreMF_u-rcodedmbywWhooDoo22 EURUSD,M30: OrderModify 関数の不明チケット6番です。

チケット#6がクローズされたばかりで修正できません ... ... ...
 
WhooDoo22:
注文を選択する方法は複数あると思いますが、全ての注文の選択方法はOrderSelect()関数を使用する必要があります。とはいえ、ストラテジーテスターでは、EAが明らかにすべての注文に対してOrderClose()関数をエラーなく実行しているので、これが失敗する理由はわかりません。

orderCloseは明らかに機能していません。リターンコードをチェックして いれば、それがわかるはずです。orderSelectは動作していませんが、あなたはチェックしません。

もしIがチケット番号でないなら、あなたのorderSelectは失敗し、他のすべても失敗する。

もしIがチケット番号なら、次のチケット番号はi+1ではありません(テスターでは除く)。

   OrderSelect(i,SELECT_BY_TICKET,MODE_TRADES);
   if(OrderType()==OP_BUY)                                                                     {
   if(OrderLots()==0.04)                                                                       {
   if(OrdersTotal()>0)                                                                         {
   if(iMA(NULL,0,1,0,MODE_SMMA,PRICE_CLOSE,1)<(iMA(NULL,0,25,0,MODE_SMMA,PRICE_CLOSE,1)))      {  
     {
      OrderClose(i,0.01,Bid,30,CLR_NONE); 
      i++;
     }
     }}}}
     
   OrderSelect(i,SELECT_BY_TICKET,MODE_TRADES);
   if(OrderType()==OP_BUY)                                                                     {
   if(OrderLots()==0.03)                                                                       {
   if(OrdersTotal()>0)                                                                         {
   if(iMA(NULL,0,1,0,MODE_SMMA,PRICE_CLOSE,1)<(iMA(NULL,0,50,0,MODE_SMMA,PRICE_CLOSE,1)))      {  
     {
      OrderClose(i,0.01,Bid,30,CLR_NONE); 
      i++;
     }
     }}}}
     
   OrderSelect(i,SELECT_BY_TICKET,MODE_TRADES);
   if(OrderType()==OP_BUY)                                                                     {
   if(OrderLots()==0.02)                                                                       {
   if(OrdersTotal()>0)                                                                         {
   if(iMA(NULL,0,1,0,MODE_SMMA,PRICE_CLOSE,1)<(iMA(NULL,0,100,0,MODE_SMMA,PRICE_CLOSE,1)))     {  
     {
      OrderClose(i,0.01,Bid,30,CLR_NONE); 
      i++;
     }
 

サイモン

Liveのアカウントがあれば...。

RE:私は、ライブ口座の残高で ボリュームIを実行することを強くお勧めしません。もちろん、選択するのはあなたですが、あなたの代わりに、第1巻から第2巻への進化が完了するまでは、ライブ口座で実行することを強くお勧めしません。第I巻はまだ開発中であり、完全にコード化されるまでは実行しない方がよいでしょう。私自身はライブ口座でテストしていないので、何が起こるかわかりません。私は、その完成度の低さを理解し、ライブ口座でのテストを開始する前に、その本質的な要求を満たすことを選択しました。


ところで、、、。

RE: このエラーについて、何が起こっているのかすぐに理解できたと思うのですが・・・。このエラーは、"EMERGENCY SL" コードブロック内のエラーを反映しています。これはコード化するのがそれほど難しくないので、私は力を注いだことはありません。部分的にコーディングして、成熟を完了させなかったのです。EMERGENCY SL」のコードブロックは、重要なテーラリングが欠けています。SELLとBUYの両方の "EMERGENCY SL "コードブロックを完全に削除すれば、11ギガのエラーリストが表示されないと確信しています。そもそもなぜ11ギガなのかというと、テストされている歴史の中で何度も同じエラーが繰り返されていると思うからです。

ありがとうございました。


ウィリアムです。

私は、Simonほどあなたとコードについて議論した歴史はありませんが、あなたの投稿に前進したいと思います(あなたの投稿に感謝します!それは歓迎されます)。

Volume I/IIに望むことは何ですか?

私は厳格にテストを実行し、その取引価値を保証するために、テストに不可欠なコードを追加しています。その後、LIVE/DEMOでの安全な取引を保証するために、残っているコードの問題を微調整するつもりです。

ありがとうございました。

 
RaptorUK:
もし私が以前取引したことのあるライブ口座を持っていて、現在ライブ注文がない場合、その口座でEURUSD M30であなたのEAを実行したらどうなりますか? それは取引を行うのでしょうか?

WhooDoo22 です。

サイモン

もし私がライブ口座を持っていたら...

RE:I strongly do not recommend you running volume I on a live account balance! もちろん、選択するのはあなたですが、あなたの代わりに、I巻からII巻への進化が完了するまでは、ライブ口座で実行することを強くお勧めしません。第I巻はまだ開発中であり、完全にコード化されるまでは実行しない方がよいでしょう。私自身はライブ口座でテストしていないので、何が起こるかわかりません。私は、完成度の低さを理解し、ライブ口座でのテストを開始する前に、その本質的な要求を満たすことを選択しました。


私が作ろうとし、あなたに見てもらうようにしたポイントは、もし口座の履歴があれば、あなたのコードのこれらの行が取られるどんな取引も防ぐということです ... ...

   if(OrdersHistoryTotal()==0)                                                                 
      {
      if(OrdersTotal()<MaxOrders)  
   if(OrdersHistoryTotal()==0)                                                                 
      {
      if(OrdersTotal()<MaxOrders)  


このため、履歴に古い注文があると、EAが取引を行うことはありません。

 

Simonさん。

私が言いたかったのは...

RE:理解しました。あなたはそれがユニークなチケット変数を検索するOrderSelect()関数を 使用することが可能であると信じていますか、次に "if(OrdersHistoryTotal()==0){"を含むコードブロックが横たわっているでしょう。これは、OrderSelect()関数がユニークチケット変数「ticket」を選択し、OrdersHistoryTotal()関数がユニークチケット変数の取引履歴のみを検索しているため、動作しないのではないでしょうか?if文」は、特定の変数であるユニークチケット変数の履歴の注文のみを検索しているのです。

//*************************
// BUY ORDER OPEN SECTION ;
//*************************

   OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
   if(OrdersHistoryTotal()==0)                                                                 {
   if(OrdersTotal()<MaxOrders)                                                                 {
   if(iMA(NULL,0,1,0,MODE_SMMA,PRICE_CLOSE,2)<(iMA(NULL,0,200,0,MODE_SMMA,PRICE_CLOSE,2)))     { 
   if(iMA(NULL,0,1,0,MODE_SMMA,PRICE_CLOSE,1)>(iMA(NULL,0,200,0,MODE_SMMA,PRICE_CLOSE,1)))     { 
     {
      ticket=OrderSend(Symbol(),OP_BUY,0.05,Ask,30,0,0,"",0,0,Blue);    
      i++;
     }
     }}}}

ありがとうございます。

 
WhooDoo22:

Simonです。

私が言いたかったのは...

RE:理解しました。OrderSelect()関数を使用して、ユニークなチケット変数を検索することが可能であると思いますか?これは、OrdersHistoryTotal()関数が、ユニークなチケット変数の過去の取引のみを検索しているため、動作しないのでしょうか?if文」は、特定の変数、ユニークなチケット変数の履歴の中の注文だけを検索しています。

ありがとうございました。

OrdersHistoryTotal()関数がユニークチケット変数の以前の取引のみを検索しているため、これは動作しないのでしょうか?「これは間違っています、ドキュメントをチェックしてください。

"ターミナルに読み込まれた口座履歴の中で、クローズした注文の数を返します。履歴リストのサイズは、ターミナルの "アカウント履歴" タブの現在の設定に依存します。


これは、チケット番号やチケット変数、マジックナンバーなどとは何の関係もありません ... それは、履歴プール内の取引の合計 数を返します ... 唯一の制限要因は、あなたが口座履歴タブで表示するように選択したものです ...すべての履歴、過去3ヶ月、過去1ヶ月、またはカスタム期間。
 
もう一つのポイントは、もし私があなたのEAを使用していて、それが取引を行った場合、数分間PCをシャットダウンする必要があり、私がMT4を立ち上げ、あなたのEAが起動しても、オープンオーダーを見つけることができないことです。.すべてのOrderSelect()コールは、チケットで選択されます ...チケット 変数またはi 変数を使用して、どちらも私のオープンオーダーのチケット番号を保持する方法がありません。
 

サイモン

あなたは少し混乱していると思います ... ...

RE: Volume II は、条件に基づいて注文の送信処理を開始する必要があります。 最初の注文が(条件に基づいて)送信されると、OrderClose()関数が 今後のすべての取引を実行するのをブロックします。これをサイクルとして考えてみてください。条件に基づいてボールを転がし、最初の注文(ボールローラー注文)が閉じられたら、サイクルが開始されます。このサイクルは、将来の条件が満たされるまで、数字を計算し、アクティブな条件をチェックし続けます。

ありがとうございました。