どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 341

 

皆さん、助けてください。次の新規注文が前の注文の2倍のロットで開くように関数を書きたいのですが。この関数は間違った値を出力しています...何がいけないのでしょうか?ありがとうございました。



extern double LotBuy = 0.01;


double GetLotBuy()

{

for(int n = 1; n<=CountBuy(); n++)
{
LotBuy=LotBuy*2;
}
return (LotBuy);
}

 
Trader7777:

皆さん、助けてください。次の新規注文が前の注文の2倍のロットで開くように関数を書きたいのですが。この関数は間違った値を出力しています...何がいけないのでしょうか?ありがとうございました。



extern double LotBuy = 0.01;


double GetLotBuy()

{

for(int n = 1; n<=CountBuy(); n++)
{
LotBuy=LotBuy*2;
}
return (LotBuy);
}


まずは手始めに。

extern double LotBuy = 0.01;

double GetLotBuy()

{
double ld_Lot = LotBuy;
for(int n = 1; n<=CountBuy(); n++)
{ld_Lot = LotBuy * n * 2;}
return (ld_Lot);
}

 
Trader7777:

皆さん、助けてください。次の新規注文が前の注文の2倍のロットで開くように関数を書きたいのですが。この関数は間違った値を出力しています...何がいけないのでしょうか?ありがとうございました。



extern double LotBuy = 0.01;


double GetLotBuy()

{

for(int n = 1; n<=CountBuy(); n++)
{
LotBuy=LotBuy*2;
}
return (LotBuy);
}

これを試してみてください。

double OrderLotsSB(string sy="", int op=-1, int mn=-1) { 
 datetime o;
   int      i, k=OrdersTotal(); double r=-1;

  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_SELL||OrderType()==OP_BUY) {
          if (op<0 || OrderType()==OP_SELL||OrderType()==OP_BUY) {
            if (mn<0 || OrderMagicNumber()==Magic) {
              r=OrderLots()*2;
            }
          }
        }
      }
    }
  }
  return(r);
}
 
TarasBY:

まず手始めに。

extern double LotBuy = 0.01;

double GetLotBuy()

{
double ld_Lot = LotBuy;
for(int n = 1; n<=CountBuy(); n++)
{ld_Lot = LotBuy * n * 2;}
return (ld_Lot);
}



冗談だろう?
 

自作のインジケータを元にEAを作成。

始値取引は、昨日との比較で指標の上昇で買い、下降で売る。

問題は、トレードが1本以上のバーを通してオープンし、クローズすることです。

ある設定値での動きを無視するようにインジケータが設定されています。

超過がなければ、インジケータの値は前のバーのままです(問題はこの辺にあると思います)

インジケーターコードです。

//+------------------------------------------------------------------+
//|                                                         EMAF.mq4 |
//|                                                 Kamil Gazizullin |
//|                                             forexman77@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Kamil Gazizullin"
#property link      "forexman77@yandex.ru"
#property indicator_chart_window
#property indicator_buffers 1
#property  indicator_color1 Red
//--- input parameters
//--- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE,0,1);
   SetIndexBuffer(0,ExtMapBuffer1);
   IndicatorDigits(Digits+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    int counted_bars=IndicatorCounted(),                      
    limit;
    double
    raznica,raznica_static,
    MA_1_t,                                                  
    MA_2_t;
 
   if(counted_bars>0)
      counted_bars--;
   limit=Bars-counted_bars;
   for(int i=0;i<limit;i++)
   {  
      static double MA_otshet;
      MA_1_t=iMA(NULL,0,7,0,MODE_EMA,PRICE_CLOSE,i+0);  
      MA_2_t=iMA(NULL,0,7,0,MODE_EMA,PRICE_CLOSE,i+1); 
      raznica=MA_1_t-MA_2_t;
      raznica_static=MA_1_t-MA_otshet;
      if(raznica_static > -0.003 && raznica_static < 0.003)
      {
      ExtMapBuffer1[i]=MA_otshet;
      }
      else
      if(raznica > -0.003 && raznica < 0.003)
      {
      ExtMapBuffer1[i]=MA_2_t;
      MA_otshet=MA_2_t;
      }
      if((raznica > 0.003) || (raznica <- 0.003))
      {
      ExtMapBuffer1[i]=MA_1_t;
      }
   }
   return(0);
  }
//+------------------------------------------------------------------+

EAの取引基準

   // Торговые критерии
EMAF_1=iCustom(NULL, 0, "EMAF",0,0,i+0);    
EMAF_2=iCustom(NULL, 0, "EMAF",0,0,i+1); 
static datetime t;
if  (EMAF_1 > EMAF_2)
          {                                          
          Opn_B=true; 
          t=Time[0];                  
          }
if  (EMAF_1 < EMAF_2)
      {
       if(Time[0]>t)
          {                                      
          Cls_B=true;              
          }
      }
 
klop:
こんにちは。

このようなスクリプトが必要です。

ワズ
ユーロ/GBP/1ロット/オープン312.25/スロー559.45/TP454.55
YUI/ghf / 1ロット / Open 3.28 / Sl 5.65 / TP 4.65
.../... / 1区画 / 開放 ...... / SL ...... / TP ......


になった
ユーロ/GBP / 1.02ロット / オープン 312.25 / スルー 559.45 / TP 454.55
YUI/ghf / 1.02ロット / Open 3.28 / Sl 5.65 / TP 4.65
.../... / 1.02区画 / オープン ...... / SL ...... / TP ......

ある数量(ロット)の保留中の注文を閉じ、別の数量の新規注文を開くと、エントリーレベル、ストップ、テイクは同じになるのはどういうことか。

どうだろう・・・もしかしたら、誰かが持っているかもしれない。
このような機能を持つスクリプトをお探しの方は、本サイトの検索エンジンをご利用ください。
 
max020780:



ここでは何も分からない...。


2つ目の一方向注文が開かれた場合、ロットサイズを幾何学的に(倍率2倍で)増加させたいのです。

 
Vinin:

冗談だろう?
その解決策は、いくつかの "ステップ "からなることが少なくない。第1段階は、敷地面積の指数関数的な 増加を抑えることです。その過程で、少なくともサイクルの使用には何らかの意味を持たせています。そして、「どこからが始まりか」がわからない以上、それ以上のステップは作者に委ねられている。;)
 
TarasBY:
その解決策は、いくつかの "ステップ "からなることが少なくない。第1段階は、敷地面積の指数関数的な拡大を抑えることです。同時に、少なくともサイクルの使用には何らかの意味を持たせています。そして、「どこからが始まりか」が分からない以上、それ以降のステップは作者次第となる。;)

これはもちろん素晴らしいことですが、それでも、次の片方向の注文を、前の注文の2倍のロットで開けるにはどう表現したらいいでしょうか?CountBuy()とCountSell()の2つの関数がすでに動作しています。
 
Trader7777:
そのようなチェック(スクリプト)ができないのはなぜですか?
ファイル: