[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 171

 

皆さん、こんにちは!EAを書きました。テスターではすべてうまくいくのですが、実際の口座ではポジションを開くことができません。彼は非常によく手動で開かれたポジションを閉じますが、正確に開くには、したくないことに注意してください...どうすればいいのか?


CODE:


//+------------------------------------------------------------------+
//| DOKTRADE.mq4について
//| DOKSTER@YANDEX.RU |
//| DOKSTER@YANDEX.RU |
//+------------------------------------------------------------------+
#property copyright"DOKSTER@YANDEX.RU"
#プロパティリンク "DOKSTER@YANDEX.RU"

extern double LOT = 0.01; // ロット数
extern double KOF = 2;
extern double SAF = 5;
extern int FRC = 21;

int start()

{


int CNT。

int TOTAL
int SPREAD

ダブルSPR
ダブルSPRW

ダブルFRCU
double FRCU; double FRCD;

ダブルEMAH。
double EMAM;;
double EMAL; double EMAL;

ダブルOPEN
ダブルクローズ

ダブルDFB。
ダブルDFS

EMAH = iMA(NULL,0,34,8,MODE_SMA,PRICE_HIGH,1);
EMAM = iMA(NULL,0,34,8,MODE_SMA,PRICE_MEDIAN,1);
EMAL = iMA(NULL,0,34,8,MODE_SMA,PRICE_LOW,1);

OPEN = iOpen(NULL,0,1);
CLOSE = iClose(NULL,0,1);

FRCU = High[iHighest(NULL,0,MODE_HIGH,FRC,1)];
FRCD = Low[iLowest(NULL,0,MODE_LOW,FRC,1)];

dfb = (close-frcd);
dfs = (frcu-close)です。

SPR = MarketInfo(Symbol(),MODE_SPREAD)。
SPRW = (SPR*Point);

TOTAL = OrdersTotal();

if(TOTAL<1)

{

{ if (OPEN<EMAH&&CLOSE>EMAH)

OrderSend(Symbol(),OP_BUY,LOT,Ask,3,FRCD-(SAF*Point),CLOSE+(DFB*KOF), "DOKTRADE",15775,0,Green)を実行。


if (OPEN>EMAL&&CLOSE<EMAL)

OrderSend(Symbol(),OP_SELL,LOT,Bid,3,FRCU+((SAF*Point)+SPRW),CLOSE-(DFS*KOF), "DOKTRADE",15885,0,Red).を送信します。

return(0)です。

}
}

for(CNT=0;CNT<TOTAL;CNT++)

{

OrderSelect(CNT,SELECT_BY_POS,MODE_TRADES);

{

if (OrderType()==OP_BUY && OrderSymbol()==Symbol())

{

if (OPEN>EMAL&&CLOSE<EMAL)

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet)を実行。

return(0)です。

}

if (OrderType()==OP_SELL && OrderSymbol()==Symbol())

{

if (OPEN<EMAH&&CLOSE>EMAH)

OrderClose(OrderTicket(),OrderLots(),Ask,3,Blue)を実行します。

return(0)です。

}

}

}

}
 

こんにちは。

みんな、私がどこで間違っているのか、教えてください。Aroon Up&Dnのインジケーターを持っています。

Expert Advisorに入れようとしているのですが・・・。注文を開こうとしない。

extern int     _Aroon_Period = 14;
extern int     _TimeF = 60;
extern int     _Point = 10;
extern double  _lots=0.01;
extern int     _Prof = 150;
int start()
  {
//----
   double _Up1, _Up2, _Dn1, _Dn2;
   if (Volume[0]>1) return;
   if (_Point<MarketInfo(Symbol(),MODE_STOPLEVEL)) _Point=MarketInfo(Symbol(),MODE_STOPLEVEL);
   _Up1=iCustom(NULL,_TimeF,"Aroon_Up_Down",_Aroon_Period,1,1); // пробовал 0 и AroonUpBuffer
   _Up2=iCustom(NULL,_TimeF,"Aroon_Up_Down",_Aroon_Period,1,2);
   _Dn1=iCustom(NULL,_TimeF,"Aroon_Up_Down",_Aroon_Period,2,1);
   _Dn2=iCustom(NULL,_TimeF,"Aroon_Up_Down",_Aroon_Period,2,2);  // пробовал 1 и AroonDnBuffer

   if (_Up1>_Dn1  && _Up2<_Dn2) 
   
   {      
       _OrderDelete(OP_SELLSTOP);
      _price=NormalizeDouble((High[1]+_Point*Point),MarketInfo(Symbol(),MODE_DIGITS));
      _OrderModify(OP_SELL);
      OrderSend(Symbol(),OP_BUYSTOP,_lots,_price,5,0,_price+_Prof*Point,0,0,0,Green);
   }
   if ( _Up1<_Dn1  && _Up2>_Dn2 ) 
   
   {     
      _OrderDelete(OP_BUYSTOP);
      _price=NormalizeDouble((Low[1]-_Point*Point),MarketInfo(Symbol(),MODE_DIGITS));
      _OrderModify(OP_BUY);
      OrderSend(Symbol(),OP_SELLSTOP,_lots,_price,5,0,_price-_Prof*Point,0,0,0,Red);
   }

//---- OrderSendError
   return(0);
  }
ファイル:
 
7sintez:

皆さん、こんにちは!EAを書きました。テスターではすべてうまくいくのですが、実際の口座ではポジションを開くことができません。彼は非常によく手動で開かれたポジションを閉じますが、正確に開くには、したくないことに注意してください...どうしたらいいんだろう?


まず、ログのエラーを見る...注文を送信 する際の価格パラメータについては、NormalizeDoubleを強く推奨します。

 
splxgf:

そもそも、ログブックのエラーを見てみると...。注文を送信する際の価格パラメータについては、NormalizeDoubleを強く推奨します。

ありがとうございます。でも、もう少し具体的に教えていただけると...。シンクロ以外のジャーナルが表示されない!?アドバイスお願いします!どこかに追加すべきことがあるかもしれません。はい、普通に閉まりますが...。クロージングですべてがうまくいく......!
 
また、もう一つの質問ですが、他のスクリプトの動作がこのEAの動作に影響を与えることはあるのでしょうか?
 
NormalizeDoubleで 終了...反応なし!設定で何を変更すればよいのでしょうか?
 
splxgf:

https://docs.mql4.com/ru/array/ArrayMaximum にアクセスすることができます。

の配列で、High になります。

もう少し具体的に教えていただけると、分かりやすかったです。High[i]とHigh[1]の間の最高値を求める必要があります。ありがとうございました。
 
93408:

こんにちは。

みんな、私がどこで間違っているのか、教えてください。Aroon Up&Dnのインジケーターを持っています。

Expert Advisorに入れようとしているのですが・・・。注文を開こうとしない。


このためだと思います。

if (音量[0]>1) return;

 
7sintez:
ありがとうございます。でも、もう少し具体的に教えていただけると...。なぜなら、ログには同期以外のことは何も表示されないからですアドバイスお願いします!どこかに追加すべきことがあるかもしれません。はい、普通に閉まりますが...。I.e.終了時にすべて動作する......!

実際、専門家であるライターにそんな質問をするのはナンセンスですからね......。)だから、初心者には未熟なのです。 チェックポジションや指値が建値に 近いかどうかを確認するのであれば、中国語の文法を勉強した方がいいでしょう。
 
Roger:


そのためだと思います。

if (音量[0]>1) return;

いいえ、そうではありません。

皆さん、ありがとうございました。効果あり