どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 537

 
VoDyaMon:

OBJ_ARROW_RIGHT_PRICE型のオブジェクトを作成し、それを削除する簡単なスクリプトを書いた場合、そのオブジェクトは削除されません。さらに、ObjectTypeコマンドを実行すると、作成されたオブジェクトはOBJ_ARROW_RIGHT_PRICE(==36)ではなく、==22、つまり単純な「矢印の上」であることが突然判明しました!!!!!!。私だけなのか、それともみんなそうなのか?

この問題については、すでに「専門家」の意見もありました:ヘルプを読めとか、メモリが足りないとか :) 。

メモリで十分です。

ObjectCreateコマンドでOBJ_ARROW_RIGHT_PRICEタイプのオブジェクトが描画 され、ObjectsDeleteAll(0,OBJ_ARROW_RIGHT_PRICE)コマンドでは削除できず、ObjectsDeleteAll(0,22)コマンドで削除できるようで、まるで正しい値札ではなく「上矢印」だったかのように表示されているのです。 誰のせい?

.........

OBJ_ARROW_RIGHT_PRICE型のオブジェクトを削除するには、ObjectsDeleteAll(0,OBJ_ARROW)コマンドを使用し、サブウィンドウの表示を必須とします。

p.s. OBJ_ARROW 型のオブジェクトは、"上向き矢印 "だけでなく、あらゆる "矢印 "を意味します。 ObjectCreate(...OBJ_ARROW...)は、すぐに「上向き矢印」を作成します。なぜヘルプに載っていないのか、その騒動は?

この スレッドに書き込んでください。少なくとも開発者はいる。
 

台本がある。

#property show_confirm;
int slip=5;

void start()
{
  for(int i=OrdersTotal()-1;i<=0;i--)
  {
   int p=0; double price=0;
      if(OrderSelect(i,SELECT_BY_POS))
     {
       switch(OrderType())
        {
         case 0: price = MarketInfo(OrderSymbol(),MODE_BID); break;
         case 1: price = MarketInfo(OrderSymbol(),MODE_ASK); break;
         default: break;
        }
         while(p<5)                              
           {                                    
            bool tik= OrderClose(OrderTicket(),OrderLots(),price,slip,Red);
            if(tik==true) 
               break;                   
            else                              
              {
               p++;                              
               Print(__FUNCTION__,"_Error_",GetLastError()); 
               Sleep(1000);                       
              }
           }
     }
 }
}

現在開いている成行注文を1つも決済しようとしない。なぜ?

ログにエラーは書き込まれません。

2014.03.10 04:39:11.093 スクリプトcloseallmarket AUDUSD,M30: 削除<br / translate="no"> 2014.03.10 04:39:11.093 closeallmarket AUDUSD,M30: uninit reason 0
2014.03.10 04:39:11.093 closeallmarket AUDUSD,M30:初期化されました。
2014.03.10 04:39:10.109 スクリプト closeallmarket AUDUSD,M30: 正常にロードされました。
 

交換

 for(int i=OrdersTotal()-1;i<=0;i--)

まで

 for(int i=OrdersTotal()-1;i>=0;i--)
 

プログラミングの初心者を 拒まないで、コードが正しく書かれているかどうか、見てください。対処するのが億劫でない人。多通貨なのでStrategy Testerでテストできない。アーカイブに添付されたコードとインジケータを含むファイル。



ファイル:
 

午後

phpからmql4へのコードアナログが作れない。

$massiv = array(
            "1" => 0.2145,
            "2" => 1.5447,
            "3" => 0.3544,
            "4" => 3.6541,
            "5" => 6.5441,
            "6" => 4.3217,
            "7" => 5.8354,
            "8" => 7.6877            
            );
                        
            asort($massiv);
            $i=0;
            foreach ($massiv as $key => $val){$i++;$massiv[$key]=$i;}
            
            $a="";
            ksort($massiv);
            foreach ($massiv as $key => $val){$a=$a.$val.".";}  

つまり、配列からです。

            "1" => 0.2145,
            "2" => 1.5447,
            "3" => 0.3544,
            "4" => 3.6541,
            "5" => 6.5441,
            "6" => 4.3217,
            "7" => 5.8354,
            "8" => 7.6877 

配列を取得する必要がある

            "1" => 1,
            "2" => 3,
            "3" => 2,
            "4" => 4,
            "5" => 7,
            "6" => 5,
            "7" => 6,
            "8" => 8 

助けが必要です。

 
Roger:

交換

まで


ああ...ああ...男、それはまたの機会に、ありがとう ))))
 

入金通貨で指定した損益値になったら口座の全ポジションを決済する簡単なEAを書こうとして いるのですが(数シンボル単位で開いています)、ポジションが表示されるとすぐに決済してしまいます(((

何が問題なのか理解できない。

input double tp_c = 80.0;
input double sl_c = 120.0;

input int slip=5;

 double profit_c = 0.0;

void OnTick()
  {
   currencyprofit();
   if(profit_c > tp_c || profit_c < sl_c) closeall();
  }

double currencyprofit()
  {
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS))
         profit_c = profit_c + OrderProfit();
     }
   return(profit_c);
  }

void closeall()
  {
     for(int i=OrdersTotal()-1;i>=0;i--)
     {
      int p=0; double price=0;
         if(OrderSelect(i,SELECT_BY_POS))
        {
          switch(OrderType())
           {
            case 0: price = MarketInfo(OrderSymbol(),MODE_BID); break;
            case 1: price = MarketInfo(OrderSymbol(),MODE_ASK); break;
            default: break;
           }
            bool tik= OrderClose(OrderTicket(),OrderLots(),price,slip,Red);
            if(tik==false) 
              {
               Print(__FUNCTION__,"_Error_",GetLastError()); 
               Sleep(3000);
               break;
              }
        }
     }
  }
 
denis77515:

プログラミングの初心者を拒まないで、コードが正しく書かれているかどうか、見てください。対処するのが億劫でない人。多通貨なのでStrategy Testerでテストできない。コードとインジケータのファイルをアーカイブに添付 しておきました。



初心者がこのようなExpert Advisorでトレードし、それに見合うだけのトレーディングシステムを書こうという気概があるのか、大変興味があります。預けるのはかわいそうじゃない?


取引アルゴリズムに踏み込まず、最適化の試みもないまま、コードに多くのエラーが表示されています。

CountBuy_JPY() CountSell_JPY() CountBuy_GBP() 関数の違いは何ですか?買いポジションはすべて、売りポジションはすべて、同じ結果が出力されます。これらの関数をすべて1つにまとめて書き、記号とそれを使った注文 数を2つのリンクされた配列で得るようにしてください。

あなたはテスターから月と同じくらい遠いところにいるのです。各関数についてスクリプトを書き、何が得られるかを見てから、デバッガを実行してすべての変数を見るべきです。そうすることで、少しずつ前に進んでいくことができます。

 
evillive:

入金通貨で指定した損益値になったら口座の全ポジションを決済する簡単なEAを書こうとしているのですが(数シンボルで建てています)、ポジションが表示されるとすぐに決済してしまいます((

何が問題なのか理解できない。


状態を分析する ...そして、アドバイスは同じで、プリントアウトのスクリプトを使い、トレードの 操作をとりあえずコメントアウトして、デバッグすることです
if(profit_c > tp_c || profit_c < sl_c) closeall();   profit_c > 80 ИЛИ  profit_c < 120   
 
evillive:

入金通貨で指定した損益値になったら口座の全ポジションを決済する簡単なEAを書こうとしているのですが(数シンボルで建てています)、ポジションが表示されるとすぐに決済してしまいます((

何が問題なのか理解できない。



input double tp_c = 80.0;
input double sl_c = - 120.0; //// minus 120

input int slip=5;

 double profit_c ;

void OnTick()
  {
   currencyprofit();
   if(profit_c > tp_c || profit_c < sl_c) closeall();
  }

double currencyprofit()
  {
   profit_c = 0.0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS))
         profit_c = profit_c + OrderProfit();
     }
   return(profit_c);
  }

void closeall()
  {
     for(int i=OrdersTotal()-1;i>=0;i--)
     {
      int p=0; double price=0;
         if(OrderSelect(i,SELECT_BY_POS))
        {
          switch(OrderType())
           {
            case 0: price = MarketInfo(OrderSymbol(),MODE_BID); break;
            case 1: price = MarketInfo(OrderSymbol(),MODE_ASK); break;
            default: break;
           }
            bool tik= OrderClose(OrderTicket(),OrderLots(),price,slip,Red);
            if(tik==false) 
              {
               Print(__FUNCTION__,"_Error_",GetLastError()); 
               Sleep(3000);
               break;
              }
        }
     }
  }