目利きの方に質問です - ページ 8

 

こんにちは。Sensation!儲かる戦略が見つかった!

Ridは今朝、EAを投稿しました。ダウンロードして、少し最適化して実行しました。

デモ口座(dax)では問題なく動作しています(mt4 brok-trade)。

実際のアカウントでテストしてみました。スタートロット=0.01または0.1。

効かない!?ログがエラーを返す

2009.06.12 15:17:26 HlopMaster FDAXM9,M1: OrderSend 関数のロット数が無効です。

2009.06.12 15:17:26 HlopMaster FDAXM9,M1: OrderSend()- Error OP_SELLSTOP. OP 5087.50000000 SL 0.00000000 TP 0.00000000 4051

//------------------------------------------------------------------

その理由がわからない。

保証金の大きさによって、所定のロットをリザーブで設定することができます。リアル口座のExpert Advisorのコードに制限はありません。

では、何が問題なのでしょうか?アドバイスお願いします


 

以下は、そのソースコードです。

...!!!!!!!!!!!!!!!!!! .........!!!!!!!!!!!!!!!!!

どうなんでしょうね。コードの制限をいつ解除するのか?Expert Advisor のコードをオープンウィンドウで専門フォーラムにそのまま投稿できないのはなぜですか?

READY LARGE TEXT SIZE」の代わりに出てくる答えが効きすぎです。

MQは競合他社の「コサック」がスタッフとして働いているようで、訪問者を怒らせ、ここで正しい質問ができないようにするために、あらゆる手段を講じているようです。



ファイル:
hlopmaster.mq4  11 kb
 

以下は、ロットの計算を担当するコードの一部です。

//------------------------------------------------
double GetMaxLot()// Функция возвращает максимальный обьем 
//открытой позиции.  
{int i;double maxlot;
   for( i=1; i<=OrdersTotal(); i++)         
   {
      if(OrderSelect( i-1, SELECT_BY_POS)==true) 
       {                                   
           if((OrderType()==OP_BUY ||OrderType()==OP_SELL)  && OrderSymbol()==Symbol()
          && maxlot<OrderLots()){ maxlot=OrderLots();}
       }
    }   
return( maxlot);
}
//-----------------------------------------------
double GetMaxLotOrder()
//Функция возвращает максимальный обьем установленных
// стоп ордеров. 
{int i;double maxlot;
   for( i=1; i<=OrdersTotal(); i++)         
   {
      if(OrderSelect( i-1, SELECT_BY_POS)==true) 
       {                                   
           if((OrderType()==OP_BUYSTOP ||OrderType()==OP_SELLSTOP)  &&
           OrderSymbol()==Symbol() && maxlot<OrderLots())
           { maxlot=OrderLots();}
       }
    }   
return( maxlot);
}
//----------------------------------------------
int GetLastTypePos(){
   int i;datetime dt;int type;
      for( i=1; i<=OrdersTotal(); i++)         
      {
         if(OrderSelect( i-1, SELECT_BY_POS)==true) 
          {                                   
              if((OrderType()==OP_BUY ||OrderType()==OP_SELL)  && OrderSymbol()==Symbol() 
              && dt<OrderOpenTime())
              { dt=OrderOpenTime(); type=OrderType();}
          }
       }   
   return( type);
}
//-----------------------------------------------
int DopOrder(double Lots)
{
int type= GetLastTypePos();
   if( type==1){
     op=Bid+ pips*Point;if( SL>0){ sl=Bid;}else{ sl=0;}if( TP>0){ tp= op+ TP*Point;}else{ tp=0;}
     err=OrderSend(Symbol(),OP_BUYSTOP, Lots,NormalizeDouble( op,Digits),3,NormalizeDouble( sl,Digits),
NormalizeDouble( tp,Digits),"FORTRADER.RU",0,0,Red);
     if( err<0){Print("OrderSend()-  Ошибка OP_BUYSTOP. 
                op "+ op+" sl "+ sl+" tp "+ tp+" "+GetLastError());return(-1);}
   }
   if( type==0){
      op=Ask- pips*Point;if( SL>0){ sl=Ask;}else{ sl=0;}if( TP>0){ tp= op- TP*Point;}else{ tp=0;}
      err=OrderSend(Symbol(),OP_SELLSTOP, Lots,NormalizeDouble( op,Digits),3,NormalizeDouble( sl,Digits),
NormalizeDouble( tp,Digits),"FORTRADER.RU",0,0,Red);
      if( err<0){Print("OrderSend()-  Ошибка OP_SELLSTOP. 
                   op "+ op+" sl "+ sl+" tp "+ tp+" "+GetLastError());return(-1);}
   }
return(0);
}
//-------------------------------------------------
int CloseAllPos(int type)
{  int buy=1; int sell=1;
int i, b=0;int ordertiket;
 
 if( type==1)
   {
   while( buy==1)
     {
        buy=0;
        for( i=0; i<OrdersTotal(); i++)
         {
           if(true==OrderSelect( i, SELECT_BY_POS, MODE_TRADES))
           {
           if(OrderType()==OP_BUY && OrderSymbol()==Symbol() ){ buy=1; 
                                  OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);}
           }else{ buy=0;}
         }  
         if( buy==0){return(0);}
      } 
   }
   
   if( type==0)
   {
      while( sell==1)
     {
        sell=0;
        for( i=0; i<OrdersTotal(); i++)
         {
           if(true==OrderSelect( i, SELECT_BY_POS, MODE_TRADES))
           {
           if(OrderType()==OP_SELL && OrderSymbol()==Symbol() ){ sell=1;
                                 OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); }
           }else{ sell=0;}
         }  
         
        if( sell==0){return(0);}
      } 
     }
   return(0);
   }
//--------------------------------------------------------


 
Rita писал(а)>>

以下は、ロットを計算するコードの一部です。

Expert Advisor は実際の口座で動作するように設計されていません。他のシンボルに少なくとも1つのオープンポジションがある場合、作業ロジックは壊れる。もちろん、修正されるかもしれませんが、私などは、あまり意味がないと思っています。

 
ありがとうございます。では、なぜこのような奇妙なエラーが返されるのでしょうか。
 
Rita писал(а)>>
>> ありがとうございました。そうすると、なぜこのような奇妙なエラーが返されるのでしょうか?

エラーが発生する可能性が高い

   if(OrdersTotal()<1){ err= OpenNewOrders();}
   if(OrdersTotal()>0){ TrailStopOrders();}

TrailStopOrders() を呼び出すとき。

すでに他のシンボルの注文があるため。この場合、EAが全く開きません。

ただし、理屈は考えないといけない。

別の場所でエラーが発生しているようです。しかし、私はそれを確認することができません。募集している職種はありません。

心の中で確認するしかない。そのためには、EAが私のものである必要があるんです。

 
MT4で、今日のトレードの獲得ピップスや損失ピップスを決定するシステムがあるかどうか知っていますか?
 

具体的に何をしたいのかがよくわからない。このデザインを見てください。

http://www.kimiv.ru/index.php?option=com_remository&Itemid=13&func=fileinfo&id=45

 
Ritaさん、ありがとうございます
 

こんばんは。大きな問題が発生した。あまり話題になっていませんね。そして非常に悪いタイミング。

昨夜、ICQに訳の分からないリンクが送られてきて、うっかりクリックしてしまった。

その後、パソコンがフリーズし、SMSを送信するようにとのウィンドウが表示されました。

何度かパソコンを再起動し、45~50分後にロックが解除されました。

しかし、今はWMウォレットに入れません

何らかのキーアクセスコードが必要です。(ファイル自体のキーは)。

どうしたらいいのかわからない。同じような状況にあったのは誰ですか?