[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 482

 
Dimka-novitsek:

ありがとうございます!!!正規化を入れる...そして、クソワロタwwwwwwwwwwwwwwwwwwwwwwww頭に血が上っている。高校の幾何学より簡単そうだ。



ASKとBIDの正規化は必要なく、Sleep(Shh1sec-5secs)が必要です。
 

了解!ここがポイント!整理すると...ご参加、ご協力ありがとうございました。自分でもよくわからないのですが、上のコードに注目してください。条件あり

 if (strela1<strela2&&SELL==0&&BUY!=0
  ){ udalenie ();

もし...もし...買い注文がなければ つまり、あるんです!ゼロではないのです。スクリーンショットでご覧いただけるように、コードはまだ動き始めたばかりで、買い注文はありませんいやー、ダメですねー。そして、その条件は満たされている、はずなのだが......!?

これは、Expert Advisorsウィンドウのプリンターのメッセージから確認することができます。ちなみに、注文は条件を満たしたとき、つまりセットされたときに完璧にセットされていましたよ。

条件を間違えていたことが判明?

もちろん、コードの次の条件も発動した。

if (strela1<strela2&&BUY==0&&SELL==0){

という、この状況下で発動すべきものだったのです

どうしたんだ!!!?

論理的条件の何が悪いんだ!?

なんで2人同時に処刑されてるんだよww

 

見ていて、わけがわからない...。一度に2つの条件を満たしたことになる!!!私はバカなのかもしれない...。しかし、私には理解できない。こんなのおかしいよ。if演算子の書き方がわからないのでしょうか!

男、全コード。

//+------------------------------------------------------------------+
//|                                                     советник.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

#include <WinUser32.mqh>
  extern double  lot=1;                          
  extern int taymfreym=0 ;                           
  extern double  stoplos=200 ;                          
  extern double  takeprofit=500 ; 
  extern double  magicnumber=350 ;                          


void BreakPoint(){//if (!IsVisualMode()) return(0);
keybd_event(19,0,0,0);
Sleep(10);
keybd_event(19,0,2,0);}

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   Print (   "  НачалоНачал " ); 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int i;
int start()
  {Print (   "  Начало " ); 
//----
for( int A=0; A<100 ; A++){
            
            double strela1 = iCustom(NULL, taymfreym, "индикатор", 2, A);
            double strela2 = iCustom(NULL, taymfreym, "индикатор", 3, A);
            
            int BUY=0,SELL=0;int ticket; 
            Print ( A,  "  strela1 " , strela1 , "    strela2  " , strela2 ); 
            
    
            
            for(int i=1; i<=OrdersTotal(); i++) {  
            if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
        {                                       // Анализ ордеров:
         if (OrderSymbol()!=Symbol( ) )continue;      // Не наш фин. инструм
         if (OrderMagicNumber( ) !=magicnumber)continue;
         if (OrderType()==0){ BUY++; ticket=OrderTicket( );Print( "BUY++   " , BUY  ,"  ticket ",ticket);}
         if (OrderType()==1) {SELL++;ticket=OrderTicket( );Print( "SELL++   " , SELL  ,"  ticket ",ticket);}    } }
         
  
  if (strela1<strela2&&SELL==0&&BUY!=0
  ){ udalenie ();
              
   OrderSend(Symbol( ), OP_BUY, lot,NormalizeDouble(Ask, Digits), 3*Point, NormalizeDouble( Bid- (stoplos*Point),Digits),   NormalizeDouble( Ask+( takeprofit*Point),Digits), NULL, magicnumber, 0, CLR_NONE);           
      Print( "strela1<strela2&&BUY==0&&SELL!=0 " , GetLastError()); }
            
  if (strela1>strela2){ udalenie ();
                
   OrderSend(Symbol( ), OP_SELL, lot,NormalizeDouble( Bid, Digits), 3*Point, NormalizeDouble( Ask+ (stoplos*Point),Digits),   NormalizeDouble( Ask-( takeprofit*Point),Digits), NULL, magicnumber, 0, CLR_NONE) ; 
        Print( "strela1>strela2&&SELL==0&&BUY!=0 " , GetLastError()); }
      
    if (strela1<strela2&&BUY==0&&SELL==0){    
            
           OrderSend( Symbol( ), OP_BUY, lot, NormalizeDouble(Ask, Digits), 3*Point, NormalizeDouble( Bid- (stoplos*Point),Digits),   NormalizeDouble( Ask+( takeprofit*Point),Digits), NULL, magicnumber, 0, CLR_NONE);  
            Print( "strela1>strela2&&BUY==0&&SELL==0   " , GetLastError()  ,"  Ask ",Ask,"   stoplos= NormalizeDouble( Bid- (stoplos*Point),Digits)  ",
 NormalizeDouble( Bid- (stoplos*Point),Digits),"    takeprofit= NormalizeDouble( Ask+( takeprofit*Point),Digits) ", NormalizeDouble( Ask+( takeprofit*Point),Digits)); }
           
   if (strela1>strela2&&BUY==0&&SELL==0){  
   
            OrderSend( Symbol( ), OP_SELL, lot,NormalizeDouble( Bid, Digits), 3*Point, NormalizeDouble( Ask+ (stoplos*Point),Digits),   NormalizeDouble( Ask-( takeprofit*Point),Digits), NULL, magicnumber, 0, CLR_NONE) ; 
            Print( "strela1>strela2&& OP_SELL  " , GetLastError()   ,"  Bid ",Bid,"    stoplos=   NormalizeDouble( Ask- (stoplos*Point),Digits)  ",
 NormalizeDouble( Ask- (stoplos*Point),Digits),"    takeprofit= NormalizeDouble( Bid+( takeprofit*Point),Digits) ", NormalizeDouble(Ask+( takeprofit*Point),Digits));
            Print( "strela1>strela2&& OP_SELL   " , GetLastError()  ," (stoplos*Point) ",(stoplos*Point),"   Point  ", Point,"   Digits  ", Digits); }
               
    
   
   
     } Print (   "  Конец " ); BreakPoint();     
//----
   return(0);
  }
//+------------------------------------------------------------------+

void udalenie (){ int total = OrdersTotal();
  for(i=total-1;i>=0;i--)
    {
    OrderSelect(i, SELECT_BY_POS);
   int type   = OrderType();  bool result = false;
    switch(type)
          { 
          case OP_BUY       : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 3*Point, CLR_NONE ); break;
          case OP_SELL      : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 3*Point, CLR_NONE ); break; 
          }
    if(!result)
      {
      int error =  GetLastError(); 
      string errorcomment = "Неудалось закрыть ордер №" + OrderTicket() + " " + Symbol() + " " + OrderType() + " " + error; 
      Print(errorcomment);
      }  
    }       
   }

説明、ちょっとだけ...。私が考える標準的なオーダーピッキングです。BUY++、SELL++の変数に個別のオープンオーダーが読み込まれます。

そして、これらの変数は、論理的な条件に関与する。あとは、誰にもわからないが、重要性はないようだ。

実は、プリントで見たものははっきりしているんです。

 
aedu:
McTrader_"+Symbol()+"_command.dat "ファイル、EA用のコマンドを書いたスクリプトのような ものが必要だと思うのですが、どうでしょうか?それ自体で作るわけではありません。そのため、説明については開発元にお問い合わせください。
 
Dimka-novitsek:

見ていて、わけがわからない...。一度に2つの条件を満たしたことになる!!!私はバカなのかもしれない...。しかし、私には理解できない。こんなのおかしいよ。if演算子の書き方がわからないのでしょうか!

男、全コード。

説明、ちょっとだけ...。私が考える標準的なオーダーピッキングです。BUY++、SELL++の変数で別途オープンオーダーを売る。

そして、これらの変数は、論理的な条件に関与する。あとは、誰にもわからないが、重要性はないようだ。

実は、プリントで見たものははっきりしているんです。

指標となるようなものを教えてください。

までも

 

大物ってなんだよ、なんであんなに興奮してるんだ?
 
Dimka-novitsek:

見ていて、わけがわからない...。一度に2つの条件を満たしたことになる!!!私はバカなのかもしれない...。しかし、私には理解できない。そんなバカな。if演算子の書き方がわからないのでしょうか!

男、全コード。

説明、ちょっとだけ...。私が考える標準的なオーダーピッキングです。BUY++、SELL++の変数に個別のオープンオーダーが読み込まれます。

そして、これらの変数は、論理的な条件に関与する。あとは、誰にもわからないが、重要性はないようだ。

実は、プリントで見たものははっきりしているんです。

論理的・技術的なミスが多い。注文を開けるロジックがトレースできない(想像力を働かせるしかない)。自分で勉強して、自分のずさんなコードを選んだり(それが「まっすぐになるまで」)、他の人のコードを勉強したりする必要があります。あなたのためにコードを書きました。- 役に立ちますか?

追伸:先ほども言いましたが、テスターの場合は価格を正規化する必要はありません。しかし、取引注文の 実行時に「Wrong price」エラーが発生する原因の一つとして、Slippageが考えられます。3 * Point(intに変換した場合)=0.です。

ファイル:
rcjipewc.mq4  6 kb
 
ありがとうございます!!!!!!!
 
san44es:

みなさん、ひとことお願いします。

カスタム関数でバックグラウンドタイムフレームの5本目のバーのLow価格をカウントするものがありますが、特定のタイムフレームの価格をカウントさせるにはどうしたらよいでしょうか?

iLow
 

ありがとうございました。コードがよりシンプルになりました。確かに、よりシンプルになりましたね。

スリッパをありがとうございました

ループ for (int A = 0; A <100 ; A++) // このバーの検索は必要ありません。EAが矢印のあるところやエラー番号のあるところに正確に注文を出したことをログから確認するのに役立つだけです。要はテスターで信号が出なかったということです。同じプリントで変数arrow1とarrow2が全てのバーで0にしかなっていないのを確認し、その状態から抜け出しました。

もちろん、このサイクルはどちらの方向にもカウントできる。しかし、またしてもいたるところでエラー129を目にすることになるのですチャート上にインジケーターの矢印が表示され、それによって注文が出されたことを確認したいのです。そこで、冒頭のスクリーンショットで変数矢印1and2が等しく、さらにゼロから17バーで、順序が設定されている - okey、スーパー!。そして、プリンターのメッセージで、ソレとソレのティックで売りがあり、さらにバーの矢印が等しくなっています - すばらしい!!!!