顧問を書くと問題がある。 - ページ 6

 
khorosh >> :

小数点以下4桁、5桁の引用は?

4桁...5桁でも試してみました。NormalizeDoubleが動作しない :(

 
総じて、ちょっと不思議な感じですね...。最初の投稿で、私はEAのスクリーンショットを与え、それをアップグレードし始め、エラーが表示された受注エラー130を、その元の状態にすべてを返しましたが、エラーが消えていない!!!!!!!!!!!!!!。でも、全部元の状態で動いたんですよ!!!!これは一体何なんだ?
 
Noterday >> :

そういうことなんです。なぜ10pipsのストップがいけないのか・・・。


ここで問題なのは、ストップロスを置くことができる最小距離が10pips以上(例:15pips)であるため、10pipsのストップは間違っている可能性があるということです。この値はディーリングルームで設定されます。
 
200回試しました!相変わらずだなあ...。
 
Noterday >> :
私も200個試しましたよ~。相変わらずだな...。


元のEAコードを掲載してもらえますか?

 
#property copyright "Мостовнек"
#property link      ""

int init()
  {
   return(0);
  }
int deinit()
  {
   return(0);
  }

extern int Frame = 1;


int start()
  {
  int total;
  
  for (int i = 0; i <= OrdersTotal(); i++)
     {
       if (OrderSelect( i-1, SELECT_BY_POS) == true)
       total++;
     }
  
  
    double Buffer1 = NormalizeDouble(iCustom(NULL, Frame,"Osc_Mx",0,0,1),4);
    double Buf1    = NormalizeDouble(iCustom(NULL, Frame,"Osc_Mx",0,6,1),4);
    double Buffer2 = NormalizeDouble(iCustom(NULL, Frame,"Osc_Mn",0,0,1),4);
    double Buf2    = NormalizeDouble(iCustom(NULL, Frame,"Osc_Mn",0,6,1),4);
    
    double ZZ_1    = NormalizeDouble(iCustom(NULL,0,"ZigZag",0,0,1),4);

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

  if ( total == 0 && (( Buffer1 != EMPTY_VALUE || Buf1 != EMPTY_VALUE) && ( ZZ_1 == Buffer1 || ZZ_1 == Buf1)))
    {
     OrderSend(Symbol(),OP_SELL,0.1,Bid,10, ZZ_1+15*Point,Bid-20*Point,"SELL",0,0,Red);
     Print("Zigzag = ", ZZ_1," | Buffer1 = ", Buffer1);
    }
  
  if ( total == 0 && (( Buffer2 != EMPTY_VALUE || Buf2 != EMPTY_VALUE) && ( ZZ_1 == Buffer2 || ZZ_1 == Buf2)))
    {
     OrderSend(Symbol(),OP_BUY,0.1,Ask,10, ZZ_1-15*Point,Ask+20*Point,"BUY",0,0,Blue);
     Print("Zigzag = ", ZZ_1," | Buffer2 = ", Buffer1);
    }

return(0);
  }
 

OrderSend()でストップロスを設定する原則は正しいです。ですから、そこは何も変える必要はありません。

Print()関数が実行されると、ZigZag=0となり、したがってストップロス:0+15*Point、すなわち0.0015に等しくなります。そのため、OrderSendError 130という エラーが発生します。

double ZZ_1 = NormalizeDouble(iCustom(NULL,0, "ZigZag",21,5,3,0,1),4);// 21,5,3 は外部指標変数で、ZigZag指標で宣言されている順に指定しなければならない。

同様に、double Buffer1 = NormalizeDouble(iCustom(NULL,Frame, "Osc_Mx",0,0,1),4) とします。
double Buf1 = NormalizeDouble(iCustom(NULL,Frame, "Osc_Mx",0,6,1),4);
double Buffer2 = NormalizeDouble(iCustom(NULL,Frame, "Osc_Mn",0,0,1),4);
double Buf2 = NormalizeDouble(iCustom(NULL,Frame, "Osc_Mn",0,6,1),4);

ここでは外部変数を指定しない。

 

しかし、MQL4のドキュメントに書かれているように、それらはオプションです。

そして、その中で

double Buffer1 = NormalizeDouble(iCustom(NULL,Frame, "Osc_Mx",0,0,1),4);
double Buf1 = NormalizeDouble(iCustom(NULL,Frame, "Osc_Mx",0,6,1),4);
double Buffer2 = NormalizeDouble(iCustom(NULL,Frame, "Osc_Mn",0,0,1),4);
double Buf2 = NormalizeDouble(iCustom(NULL,Frame, "Osc_Mn",0,6,1),4);


外部変数が全くない :)

ちなみに、私のPRINT関数では、ZigZagは正常に出力されます。


 
Noterday >> :

しかし、MQL4のドキュメントに書かれているように、それらはオプションです。

そして、その中で

double Buffer1 = NormalizeDouble(iCustom(NULL,Frame, "Osc_Mx",0,0,1),4);
double Buf1 = NormalizeDouble(iCustom(NULL,Frame, "Osc_Mx",0,6,1),4);
double Buffer2 = NormalizeDouble(iCustom(NULL,Frame, "Osc_Mn",0,0,1),4);
double Buf2 = NormalizeDouble(iCustom(NULL,Frame, "Osc_Mn",0,6,1),4);


外部変数が全くない :)

ちなみに、私のPRINT関数では、ZigZagは正常に出力されます。



これらの指標に外部変数がなければ、クレームはない :) 。でも、やっぱりストップ高は考えないと。もしかしたら、ヒントが得られるかもしれません。
 
ellizii >> :

これらの指標に外部変数がなければ、クレームはない :) 。でも、やっぱりストップ高は考えないと。もしかしたら、ヒントが得られるかもしれません。

心配しないでください :) 開発者の皆様へ: BASIC TESTER/OPTIMIZER

ストップミもそうでしょう。