KimIVの便利な機能 - ページ 74

 
allarkoms писал(а)>>

イゴールさん、こんにちは。

MQL4を学ぼうとしているのですが、言語演算子の説明が不足しているため、ある問題で躓いています。8つのバッファに蓄積されたデータを持つインジケータがあります。 私が選んだ時間枠で次の時間枠の期間と一緒に表示させる必要があります。そのために、iCustom()演算子を使用しています。しかし、それはdouble値を返し、私はこの場合、iCustomがどのように使用できるか、また使用すべきかどうかわかりません。

是非ともご協力をお願いします。

アレクセイさん、こんにちは。

iCustom()関数を使用する新しいインジケータを作成する必要があります。この関数が返す値を新しいインジケータのバッファに代入する。

 
ProfitTrader писал(а)>>

イゴールさん、こんにちは!そして皆さん、こんにちは。

エキスパートアドバイザーが取引を終了したときに、その日にこれ以上取引を行わないようにするために入力すべきコードに興味があります...

見つけたのですが、ストラテジーテスターで動作しないので、テストしたいのですが、代わりにどのようなコードを使えばいいのでしょうか?

それなら、入力条件で追加したほうがいいですね。

Sergiyさん、こんにちは。

私の関数を使用してもストラテジーテスターで動作しない理由もわかりません。もしまだ関連性があるのなら、EAのコード全体を掲載することをお勧めします。考えてみよう・・・。

 

エラー処理におけるSetOrder()関数とOpenPosition()関数の違いや特殊性についての質問があります。


SetOrder()。

      if ( err==8 || err==141) Sleep(1000*100);
      if ( err!=135 && err!=138) Sleep(1000*7.7);
      if ( err==139 || err==140 || err==148) break;

OpenPositions():エラー 8 (ERR_TOO_FREQUENT_REQUESTS), 138 (ERR_REQUOTE), 139 (ERR_ORDER_LOCKED) は SetOrder() とは異なり、処理されない。

      if ( err==141) Sleep(1000*100);
      if ( err!=135) Sleep(1000*7.7);
      if ( err==140 || err==148 || err==4110 || err==4111) break;

SetOrder()ではエラー130(ERR_INVALID_STOPS) は停止補正で処理されるが、OpenPositions()では何も処理されない。

OpenPositions() の処理で145 (ERR_TRADE_MODIFY_DENIED) が存在する。ここで加工する意味がよくわからない。

また、この議論の最初のページで、エラー処理について言及されていますが、これは両方の機能で欠落しています。

KimIV >>:

На паузу 7.7 секунды нарвутся ошибки 129 (Неправильная цена bid или ask), 130 (Неправильные стопы), 134 (Недостаточно денег), 136 (Нет цен).

また、他の(おそらく、この場合重要な)エラー、例えば3 (ERR_INVALID_TRADE_PARAMETERS), 6 (ERR_NO_CONNECTION), 7 (ERR_NOT_ENOUGH_RIGHTS),9 ERR_MALFUNCTIONAL_TRADE, 137 (ERR_BROKER_BUSY), 144 (!) の処理もありません。), 4067 (err_trade_error), 4106 (err_unknown_symbol), 4107 (err_invalid_price_param)


イゴール、以下の点についてコメントをお願いします。

ここで紹介したSetOrder()とOpenPositions()関数は、kimiv.ruサイトの2008年11月5日のb-Ordersライブラリと2008年10月29日のb-Positionsから引用しています。


付け足しておきます。エラー5 ERR_OLD_VERSION が発生した場合、2, 64, 65, 133 と同様に処理できる;4109 ERR_TRADE_NOT_ALLOWED は 4110, 4111 と同様に処理できる。

 
エラー142とはどういう意味ですか?エラーコードの 中に見つかりませんでした。また、pipsatorの遅延をどこかで減らすことが可能かどうか知りたいのですが。
 
khorosh >> :
エラー142とはどういう意味ですか?エラーコードでは見つかりませんでした。

https://docs.mql4.com/ru/trading/errors

142 注文がキューに入りました。これはエラーではなく、クライアント端末と取引サーバーの間の通信コードの一つです。このコードは、取引実行中に接続が切断され、その後接続が回復した場合に稀に受信することがあります。エラー128と同様に処理する必要があります。

 
Здравствуйте Игорь! И всем Добрый день!

GEPについての質問に興味があります。GEPはこの本では説明されていませんし、このトピックには新しいことがたくさんあります。GEPが表示されるたびにトレードオープンにする方法を知りたいです。GEPが表示されたときに注文を開く方法を知りたい。持っているのですが、なぜかこのアルゴリズムがうまくいかないのですが、ここのエラーは何ですか?

extern int     Magic                = 777;
extern int       TP                 = 6;
extern int       SL                 = 2;
extern double  Lots                 = 0.01;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
if(  iClose(NULL,0,1)>iOpen(NULL,0,0) && (iClose(NULL,0,1)-iOpen(NULL,0,0))>1*Point )
   { //покупаем
  OrderSend(Symbol(),OP_BUY, Lots,Ask,2,Bid- SL*Point,Bid+ TP*Point,
                                               NULL, Magic,0,CLR_NONE);}
                                                  
if(  iClose(NULL,0,1)<iOpen(NULL,0,0) && (iClose(NULL,0,1)-iOpen(NULL,0,0))>1*Point )
   { //продаем
 OrderSend(Symbol(),OP_SELL, Lots,Bid,2,Ask+ SL*Point,Ask- TP*Point,
                                              NULL, Magic,0,CLR_NONE);}

   return(0);
  }
//+------------------------------------------------------------------+
 
最初の条件では、最初のサブ条件は余分であり、2番目の条件である売ることは全く実現不可能である。1点は隙間なのか?スリッページが2でストップが2、重なってる可能性がありますね。
 
Roger >> :
最初の条件では、最初のサブ条件は冗長であり、販売に関する第2の条件は不可能である。1点は隙間なのか?あなたのスリッページは2、ストップは2です。

ありがとうございます。しかし、なぜ最初の前置きが余計なのでしょうか?新しいバーが前のバーの終値より上にあるときに買いポジションを開きたい、またはその逆も然りです。>> それは正しい方法なのでしょうか?

if(  iClose(NULL,0,1)<iOpen(NULL,0,0) && (iClose(NULL,0,1)-iOpen(NULL,0,0))>2*Point )
   { //покупаем
  OrderSend(Symbol(),OP_BUY, Lots,Ask,2,Bid- SL*Point,Bid+ TP*Point,
                                               NULL, Magic,0,CLR_NONE);}
                                                  
if(  iClose(NULL,0,1)>iOpen(NULL,0,0) && (iClose(NULL,0,1)-iOpen(NULL,0,0))>2*Point )
   { //продаем
 OrderSend(Symbol(),OP_SELL, Lots,Bid,2,Ask+ SL*Point,Ask- TP*Point,
                                              NULL, Magic,0,CLR_NONE);}
 
そうだ
if(  iClose(NULL,0,1)-iOpen(NULL,0,0)>10*Point )
   { //покупаем
  OrderSend(Symbol(),OP_BUY, Lots,Ask,2,Bid- SL*Point,Bid+ TP*Point,
                                               NULL, Magic,0,CLR_NONE);}
                                                  
if( iOpen(NULL,0,0)- iClose(NULL,0,1)>10*Point )
   { //продаем
OrderSend(Symbol(),OP_SELL, Lots,Bid,2,Ask+ SL*Point,Ask- TP*Point,
                                              NULL, Magic,0,CLR_NONE);}
 
Roger >> :
>> その通りです。

私が理解する限り、最初の条件は自動的に終値が始値より大きいことを意味します。2では逆なのか?