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

 
機能一覧の更新
ファイル:
f_kimiv_1.rar  12 kb
 

イゴール、保留注文を 出すための最小値をpipsで決定する機能があれば教えてください。

ありがとうございました。

 
mozg писал(а)>>
イゴール、保留中の注文を出すための最小値をpipsで定義する関数があるかどうか教えてください。
MarketInfo(Symbol(), MODE_STOPLEVEL);
 

こんにちは、イゴール!EAがシグナルを再生しないようにする関数を書いてもらえますか?つまり、このブロックコードを追加した後の状態は、「買い、売り、買い、売り、買い、売り...」のようになるはずです。など...

 
Shniperson писал(а)>>

こんにちは、イゴール! EAがシグナルを再トリガーするのを止める関数を書いていただけませんか? ...つまり、このブロックのコードを追加した後の状態は、次のようになるはずです。など...

//+----------------------------------------------------------------------------+
//|  Управление позициями.                                                     |
//+----------------------------------------------------------------------------+
void ManagePositions() {
  double sl=0, tp=0;
  int    bs= GetTradeSignal();

  if ( bs>0) {
    if ( ExistPositions(NULL, OP_SELL, Magic)) ClosePositions(NULL, OP_SELL, Magic);
    if (! ExistPositions(NULL, OP_BUY, Magic)) {
      if ( StopLoss  >0) sl=Ask- StopLoss  *Point; else sl=0;
      if ( TakeProfit>0) tp=Ask+ TakeProfit*Point; else tp=0;
      OpenPosition(NULL, OP_BUY, Lots, sl, tp, Magic);
    }
  }
  if ( bs<0) {
    if ( ExistPositions(NULL, OP_BUY, Magic)) ClosePositions(NULL, OP_BUY, Magic);
    if (! ExistPositions(NULL, OP_SELL, Magic)) {
      if ( StopLoss  >0) sl=Bid+ StopLoss  *Point; else sl=0;
      if ( TakeProfit>0) tp=Bid- TakeProfit*Point; else tp=0;
      OpenPosition(NULL, OP_SELL, Lots, sl, tp, Magic);
    }
  }
}
//+----------------------------------------------------------------------------+
//|  Возвращает торговый сигнал:                                               |
//|     1 - покупай                                                            |
//|     0 - сиди, кури бамбук                                                  |
//|    -1 - продавай                                                           |
//+----------------------------------------------------------------------------+
int GetTradeSignal() {
  int bs=0;

  if ( условия для покупки) bs=1;
  if ( условия для продажи) bs=-1;

  return( bs);
}

ExistPositions()

ClosePositions()

 

NormalizePrice()関数です。

この関数は、価格を正規化した値を返す。MarketInfo(MODE_TICKSIZE || MODE_DIGITS)関数の値を用いて正規化を行っています。NormalizePrice()関数は、以下のパラメータを受け取ります。

  • np- 正規化されたロット値.必須パラメータです。
  • sy- 取引商品の名称。NULL または""- 現在のシンボル。デフォルト値 -""。
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 21.08.2008                                                     |
//|  Описание : Возвращает нормализованное под размер тика значение цены.      |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    np - нормализуемое значение цены.                                       |
//|    sy - наименование инструмента        ("" или NULL - текущий символ)     |
//+----------------------------------------------------------------------------+
double NormalizePrice(double np, string sy="") {
  if ( sy=="" || sy=="0") sy=Symbol();
  double pp, ts=MarketInfo(Symbol(), MODE_TICKSIZE);
  int    di=MarketInfo(Symbol(), MODE_DIGITS);

  if ( ts>0) pp=NormalizeDouble( np/ ts, 0)* ts;
  else {
    if ( di>0) pp=NormalizeDouble( np* di, 0)/ di; else pp= np;
  }
  return( pp);
}

NormalizePrice()関数をテストするスクリプトを添付します。

ファイル:
 

(初心者の質問です)。

尊敬するKimIV さんが書いてくれた機能です。

GetExtremumZZPrice()。


double GetExtremumZZPrice(string sy="", int tf=0, int ne=0, int dp=12, int dv=5, int bs=3) {
  if (sy=="" || sy=="0") sy=Symbol();
  double zz;
  int    i, k=iBars(sy, tf), ke=0;

  for (i=1; i<k; i++) {
    zz=iCustom(sy, tf, "ZigZag", dp, dv, bs, 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(zz);
    }
  }
  Print("GetExtremumZZPrice(): Экстремум ЗигЗага номер ",ne," не найден");
  return(0);
}
最後の最小値と最大値の価格を2つの変数に格納するには、どのようなコードを使用する必要がありますか?( 私の心は凍りついている ;(()))
 
WroC писал(а)>>
最後の最小値と最大値の価格を2つの変数に格納するには、どのようなコードを使用する必要がありますか?
void start() {
  double p1= GetExtremumZZPrice("", 0, 0);
  double p2= GetExtremumZZPrice("", 0, 1);

  if ( p1> p2) Comment("Последний максимум ", p1, "\n Последний минимум ", p2);
  else Comment("Последний максимум ", p2, "\n Последний минимум ", p1);
}
 

キムアイビー

ありがとうございました。

 
イゴール、こんにちは!
私にできる限り、あなたが提示した資料を理解しようと努めました。正直なところ、私はまだエキスパートアドバイザーやスクリプトを使ったことがなく、実践的な経験がないのですが、大量の注文を出すためのスクリプトを作成する必要があります。
このスクリプトのタスクは、保留中の注文(主に買いストップと売りストップ)の発注を容易にすることである。
すなわち、スクリプトのパラメータは以下のように設定されている。
1.注文を出すレベル(例:EUR/USD 買いの逆指値 1.3000)
2.各注文の大きさ(例えば、0.01)。
発注のステップ(例:1pip)
4.各注文のTP(例:3ピップス)
5.保留中の注文の数(例:70)または保留中の注文が発注されるべきレベル(例:1.3070まで)です。
スクリプトにストップロスやトレーリングストップのパラメーターがあると望ましいですが、必須ではありません...
このスクリプトは、3-4時間ごとにコンピュータを起動し、状況を分析し、レンジを上方(または下方)にブレイクする注文を、1ピップの開始期間で、最小TP(3ピップ)で設定することを決定することになっています。したがって、価格が必要な側に移動した場合、これらの注文は開始され、必要な価格に達した場合、それらはTPによって閉じられることになります。そして、あるTPで全てクローズさせるという変形も可能です。値動きが過ぎると、全ての注文または注文の一部(6単位)がオープンされ、「マイナス」となります。この場合、トレーダーにとって最適と思われる他のパラメータ(ロットサイズ、ステップ、TP、注文数)で、次の注文の「階段」を反対方向に設定することになっているのです。
取引終了時に「反対売買ポジション」は決済されるため、トレーダーには上向き(または下向き)の注文が6件ほど残ります。
専門家の回答、ありがとうございました。