[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 50

 
Zhunko:
ドイツ・マルク、ECU、ユーロを考慮した。誰もが知っていることだと思った。

でも、みんながみんな...:(

不思議ですね...。ブランドはブランドである-それはユーロではない...まあ、忘れてください、その事実を考慮しますから...。

 
Notter:

良い子のみんな、こんにちは。

強い動きを伴う取引についての質問です。OrderSend 関数には、スリッページパラメータ( 注文価格からの最大スリッページ)があります。その価値に制限はあるのでしょうか?それとも、1000ポイントに設定できるのでしょうか?0」はスリッページがゼロという意味ですか、それともこのパラメータは注文を開始する際に考慮されないのですか?

また、強い動きの場合、クライアント端末から送信した私の成行注文は、サーバーに到達し、サーバー上にある保留中の注文の約定を価格に関係なく待つのか、それとも受信した瞬間の市場価格ですぐに約定するのでしょうか?つまり、ブレイク前に注文が成立するのか、それとも修正開始時にのみ建玉されるのか、期待できるのでしょうか?

スリッページとは、お客様の端末での注文 価格と、サーバーから返される価格とのポイント差のことです。考えている間に、価格が離れていくこともある。強い動きがあるときは、通常、サーバーは遅くなる。それが繁殖すればするほど、公示価格での開封の可能性は低くなり、その結果、あなたにとってより良い価格で開封することができるのです。スリッページを1000pipsに設定した場合、オープン...を移動終了時に表示します。これは証券会社にとって利益となる。そして、「厨房 :)」が多ければ多いほど、サーバーは「考える」時間が長くなり、requoteなどで過剰な負荷をかけることになります。

スリッページパラメータを0に設定することで、注文価格とサーバーから返された価格が同じ場合にのみオープンすることになります。

 

新年あけましておめでとうございます。

一日のうちで指定された時間帯の最大値と最小値を求めるようなコードを書きました。しかし、実際には何かがうまくいっていない。ぜひご覧ください。

//+------------------------------------------------------------------+
//|                                                     +Session.mq4 |
//|                                       Copyright 2012, silhouette |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, silhouette"
#property link      "http://www.metaquotes.net"

#property indicator_chart_window
#include <+ChartTrendLineCreate.mqh>

string OpenTime="00:00"; // время открытия сессии
string CloseTime="09:00"; // время закрытия сессии
int Days=100; // количество расчитываемых дней

//+------------------------------------------------------------------+
string Symb;
int i;
bool Ans;
//+------------------------------------------------------------------+
int init()
  {
   Symb=Symbol();
   return(0);
  }

int deinit()
  {

   return(0);
  }

int start()
  {
   //+------------------------------------------------------------------+
   datetime Time_OD, H1_OS, H1_CS; 
   int H1_OpenDayShift, H1_OpenSessionShift, H1_CloseSessionShift, Hst, Lst;
   string H1_OD;
   double Maximum, Minimum;
   //+------------------------------------------------------------------+
   for(i=0; i<100; i++) // перебираем дни
    {
     Time_OD=iTime(Symb,PERIOD_D1,i); // находим дату открытия выбранного бара
     H1_OpenDayShift=iBarShift(Symb,PERIOD_H1,Time_OD,false); // ...его индекс
     
     H1_OD=TimeToStr(Time_OD,TIME_DATE); 
     
     H1_OS=StrToTime(H1_OD+" "+OpenTime);
     H1_OpenSessionShift=iBarShift(Symb,PERIOD_H1,H1_OS,false); // ...индекс бара открытия сессии
     H1_CS=StrToTime(H1_OD+" "+CloseTime);
     H1_CloseSessionShift=iBarShift(Symb,PERIOD_H1,H1_CS,false); // ...индекс бара закрытия сессии
     
     // ... максимум и минимум
     Hst=iHighest(Symb,PERIOD_H1,MODE_HIGH,(H1_OpenSessionShift-H1_CloseSessionShift),H1_CloseSessionShift);
     Lst=iLowest(Symb,PERIOD_H1,MODE_LOW,(H1_OpenSessionShift-H1_CloseSessionShift),H1_CloseSessionShift);
     Maximum=iHigh(Symb,PERIOD_H1,Hst);
     Minimum=iLow(Symb,PERIOD_H1,Lst);
     
     ChartTrendLineCreate(H1_OS, Maximum, H1_CS, Maximum, Red);
     ChartTrendLineCreate(H1_OS, Minimum, H1_CS, Minimum, Red);
     
     
    }

   return(0);
  }

 
silhouette:

新年あけましておめでとうございます。

一日のうちで与えられた時間枠の中で最大と最小を見つけることになっているコードを書きました。しかし、実際には何かがうまくいっていない。ぜひご覧ください。

H1_OpenSessionShift-H1_CloseSessionShiftを試す+1
 
Mislaid:
H1_OpenSessionShift-H1_CloseSessionShiftを試す+1
ありがとうございます、これですべて正常に見つかります。
 
TF D1で4時間ごとに注文を出すEAの作り方を教えてください。今は手動でスモールTFに切り替えて、インジケーターのシグナルがD1と重なったら注文をセットするようにしています。面倒くさい、不便だ。
 
sultonov:
例えば、TF D1のEAを4時間ごとに発注するように設定するには、どうしたらよいでしょうか?もし私のインジケータのシグナルがD1と同じなら、私は手動で小さなTFに移動して注文を入れなければならないのです。面倒で不便です。 。

ユスフさん、明けましておめでとうございます!!!!

そのためには、注文を設定するためのタイムトラッキングなどの条件をEAで明示的に規定する必要がありますが、TF H4で新しいバーを 制御することで動作可能になります。

あなたの場合、H4のシンボルチャートにEAを取り付け、D1を使用して注文を開くためのシグナルを取得し、明示的にエキスパコードに設定することを妨げるものは何でしょうか?

P.S. あなたはどうですか?お酒とか飲まないんですか?

こちらは1月2日、飲んで飲んで!:-)

 

私は、FiboによってTPを見つけるべき関数を書きました。

//+-------------------------------------------------------------------------------------+
//| Вычисление ТП по Фибе                                                               |
//+-------------------------------------------------------------------------------------+
double GetProfitByFibo()
{
  double minValue, maxValue;
  
 // if(GetStateMa() == MA_TALKING_LONG)
    if(OrderType() == OP_BUYSTOP)
    {
      maxValue = iHigh(Symbol(),i_ExtremumLookingTF,i_maxValueShiftB);
      minValue = iLow(Symbol(),i_ExtremumLookingTF,i_minValueShiftB);
     
      if((maxValue - minValue) >= 7*pt)
      {
      double fibo1618 = NormalizeDouble((minValue + (maxValue - minValue)*1.618),Digits);
      }
   
    }
  
 // if(GetStateMa() == MA_TALKING_SHORT)
    if(OrderType() == OP_SELLSTOP)
    {
      maxValue = iHigh(Symbol(),i_ExtremumLookingTF,i_maxValueShiftS);
      minValue = iLow(Symbol(),i_ExtremumLookingTF,i_minValueShiftS);
 
      if((maxValue - minValue) >= 7*pt)
      {
      fibo1618 = NormalizeDouble((maxValue - (maxValue - minValue)*1.618),Digits);
      }
          
  }
  return(fibo1618);
}

本機能の外部変数はこちらです。

extern string ___H2 = "_____  Параметры для функции Fibo_TP _____";
extern int i_ExtremumLookingTF = 5,
           i_maxValueShiftB = 8,
           i_minValueShiftB = 3,
           i_maxValueShiftS = 3,
           i_minValueShiftS = 8;

動作中のEAに固定Take Profitの 代わりにこの関数を入れると、EAが失速し始める。何が問題なのでしょうか?

定期的に、注文を修正する際に、TPが全く設定されないことがある。

これは、例えば、買うための機能です(前回の修正機能はコメントアウトしています)。

//+-------------------------------------------------------------------------------------+
//| Открытие длинной позиции                                                            |
//+-------------------------------------------------------------------------------------+
bool OpenBuy()
{
  int ticket = -1;
  string myNote = "Сов баянул";
  
  double price = High[1] + i_thresholdFromInput*pt;
  double SL = Low[1] - i_thresholdFromBasedSL*pt ;

  if(price > Ask)
  {
    ticket = OrderSend(Symbol(),OP_BUYSTOP,0.1,NormalizeDouble(price,Digits),i_slippage,0,0,myNote,i_myMagic,0,Navy);
  }
  
  if(ticket > 0 && OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES) == true)
  //  if(!OrderModify(ticket,OrderOpenPrice(),NormalizeDouble(SL,Digits),NormalizeDouble(High[1] + i_tp*pt,Digits),0,Navy))
//  Print("GetProfitByFibo() = ", GetProfitByFibo());
      if(!OrderModify(ticket,OrderOpenPrice(),NormalizeDouble(SL,Digits),GetProfitByFibo(),0,Navy))
    return(false);
  
  return(true);
}
 
double GetOrderOpenPrice(string sy="NULL", int op=-1, int mn=-1)
{
datetime t;
double r=0;
inti, k=OrdersTotal();

if (sy=="0") sy=Symbol();
for (i=0; i<k; i++)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol()==sy || sy=="")
{
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if (op<)0 || OrderType()==op)
{
if (mn<0 || OrderMagicNumber()==mn)
{
if (t<OrderOpenTime())
{
t=OrderOpenTime();
r=OrderOpenPrice();
}
}
}
}
}
}
}
return(r)です。

}


この関数は、最後の注文の始値を チェックします。

この条件を関数呼び出しにどう書くか:価格が最後の注文開始価格から75pips上下に動いた場合、作業を続行します。

 

こんにちは。

添付ファイルには、Voldemar社のEAが含まれています。残念ながら、プライベートでは答えてくれないので、早急に訂正したいと思います。

注文開始条件を変更したいのですが。現在、EAはロールバック価格に設定されていますが、最後のバーに基づいて開くようにしたいのです。終値が 始値より低ければ売りを建て、その逆もまた然りです。

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

ファイル: