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

 
khorosh:
POINTとTICKSIZEの違いは何ですか?MarketInfo()を通して問い合わせると、それらは同じですが、名前が違うのになぜ違うのでしょうか? 。
POINTと TICKSIZEの違いについて教えてください site:mql4.com
 
khorosh:
POINTとTICKSIZEの違いは何ですか?MarketInfo()で問い合わせると同じになるのですが、名前が違うのであれば違うものにすべきでしょうか?

個々の楽器で異なることもある
 
Vinin:

個々の楽器で差が出ることもある
ありがとうございます。ポイントとは、1円玉のようなものです。ティクサイは、価格の最小変化 量です。ティキシーはピップ以下ではダメで、それ以上でないとダメらしい。BCの判断次第というところでしょうか。
 
EXCELのブック(開いている状態)で、MQLからマクロを実行することは可能かどうか教えてください。
 
rustein:
レバレッジなどを使った最大許容ロット数の計算方法を教えてください。
ありがとうございました。
double MeansOneLot       = MarketInfo(Symb,MODE_MARGINREQUIRED);      //Необходимо средств для открытия 1 лота
double MeansFree         = AccountFreeMargin();                       //Значение свободных средств, разрешенных для открытия позиций
double MeansGuaranty     = AccountMargin();                           //Значение залоговых средств, используемых для поддержания открытых позиций
double LotPriceTic       = MarketInfo(Symb, MODE_TICKVALUE);          //Стоимость 1 лота в валюте депо на 1 тик
double MaxLotPermissible = MathFloor((MeansFree/MeansOneLot)*100)/100;//Максимально допустимый лот для открытия позиции
 
joo:

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

テキストにファイルを添付するのに役立つ

 
友よ、問題を解決するのを手伝ってくれ...。TicketArrayの配列にチケット番号を書き込んでいます(3枚あります)。そこで、3回連続で損失を出したらEAを停止させたいのですが・・・。そもそも3ロットという条件が書けない。以前、グッドサーペントからフラッグに関する知識を教えてもらい、今使っているのですが、まだうまくいきません。最初の注文が損切りされた後、真になり、その後は問題なく動作するのですが・・・。なぜ?

bool flag = true; //по умолчанию флаг стоит на правду
for(int j=1;j<4;j++) //цикл из 3х значений (1,2,3)
{
OrderSelect(TicketArray[j],SELECT_BY_TICKET); //выбираю ордер

if(OrderClosePrice()!=OrderStopLoss() && TicketArray[j]==0)flag = false; //думаю, тут проблема. Условие: если ордер не получил лося 3 раза и если у тикета еще нет номера, то такая ситуация меня не устраивает.
Print(OrderClosePrice(),",,,,,",OrderStopLoss(),",,,,,",TicketArray[j]); //эта строчка для тестера, чтоб наглядно было видно цену закрытия, цену стопа и номер тикета. Хоть тикет и =0, но все равно пишет true.
}
Alert(flag);

念のため、EA全体を貼り付けています。これは、教育目的で自分で書いた普通のマーチンゲールです。

//+------------------------------------------------------------------+
//| StMartin.mq4 |
//| Sergey Kodolov |
//| 84232676421@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Sergey Kodolov"
#property link "84232676421@mail.ru"

extern int TP = 1000; 
extern int TS = 1000; 
extern int TF = 1; 
extern double lots = 0.1; 


double volumz;
int ticket,total;
int slip = 3; 
int Magic = 4; 

int TicketArray[4];

void FormTicket(int number) //объявил шаблон под функцию запоминания тикетов
{
for(int i=3;i>0;i--)
{
TicketArray[0] = ticket;
if(TicketArray[0]>0 && TicketArray[0] == TicketArray[1])break;
TicketArray[i] = TicketArray[i-1];
} 
}

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
ticket = OrderSend(Symbol(),OP_BUY,lots,Ask,slip,Bid-TS*Point,Bid+TP*Point,"First order",Magic,0,Yellow); //открываем первый ордер
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
int OrderTimeCheck = check3(); //проверяем, закрыт ли ордер
bool OrderCloseCheck = check2(OrderTimeCheck); //проверяем, закрылись ли ордера в минус
FormTicket(ticket); //вызываем функцию, чтоб запоминала тикеты
ProfitCheck(OrderCloseCheck); //тут рисуем линии

total = OrdersTotal();
if(total < 1)
{
OrderSelect(TicketArray[1],SELECT_BY_TICKET);
volumz = OrderLots();
if(OrderProfit()<=0)
{
if(OrderType() == OP_BUY)
{ 
double lot1 = volumz*2;
ticket = OrderSend(Symbol(),OP_SELL,lot1,Bid,slip,Ask+TS*Point,Ask-TP*Point,0,Magic,0,Green);
}
if(OrderType() == OP_SELL)
{ 
double lot2 = volumz*2;
ticket = OrderSend(Symbol(),OP_BUY,lot2,Ask,slip,Bid-TS*Point,Bid+TP*Point,0,Magic,0,Red);
}
}
if(OrderProfit()>0)
{
if(OrderType() == OP_BUY)
{
ticket = OrderSend(Symbol(),OP_BUY,lots,Ask,slip,Bid-TS*Point,Bid+TP*Point,0,Magic,0,Green);
}
if(OrderType() == OP_SELL)
{
ticket = OrderSend(Symbol(),OP_SELL,lots,Bid,slip,Ask+TS*Point,Ask-TP*Point,0,Magic,0,Red);
}
} 

} 
//----
return(0);
}
//+------------------------------------------------------------------+


int check3() //проверяем, закрыт ли ордер
{
OrderSelect(TicketArray[1],SELECT_BY_TICKET);
if(OrderCloseTime()>0)return(100);
}

bool check2(int OrderTimeCheck) //проверяем, если ордер закрыт, то последние 3 закрытых ордера были ли убыточными?
{
if(OrderTimeCheck == 100)
{
bool flag = true;
for(int j=1;j<4;j++)
{
OrderSelect(TicketArray[j],SELECT_BY_TICKET);

if(OrderClosePrice()!=OrderStopLoss() && TicketArray[j]==0)flag = false; //ТУТ ДОДУМАТЬ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Print(OrderClosePrice(),",,,,,",OrderStopLoss(),",,,,,",TicketArray[j]);
}
Alert(flag);
if(flag == true)
{
ObjectCreate("NewLabel",OBJ_LABEL,0,0,0);
ObjectSetText("NewLabel","Ура",14,"Arial",Aqua);
ObjectSet("NewLabel", OBJPROP_CORNER,1);
ObjectSet("NewLabel", OBJPROP_XDISTANCE,40);
ObjectSet("NewLabel", OBJPROP_YDISTANCE,40);
}
} 
}

void ProfitCheck(bool OrderCloseCheck)
{
if(OrderCloseCheck == true) 
{
Print("x");
} 
} 
 

PerkyAsctrend1インジケータバッファのいずれかを読み取ることができません。
どうかご教授ください。他のインジケーターでも何度もやっていますが、いつも問題なくできています。ここではできない。


double PerkyBuf2=iCustom (NULL,0," PerkyAsctrend1 ",5,250,0,1); - 正しく読み取り、シグナルはキャッチされ、次の行でキャッチしようとします。空のExpert Advisorを2つのComment() ポイントで作成することも試してみましたが、結果は同じでした。売りの信号が出ません。 理解する手助けをしてくれないか。インジケーターを添付したい
ファイル:
 
Qoren:

PerkyAsctrend1インジケータバッファのいずれかを読み取ることができません。
よろしくお願いします。他のインジケーターで何度もやっていますが、いつも問題なくできています。しかし、ここではそれが通用しない。
私は2つのバッファを読みました。
double PerkyBuf2=iCustom (NULL,0," PerkyAsctrend1 ",5,250,0,1); - 正しく読み取れ、シグナルはキャッチされ、次の行でキャッチしようとします。
double PerkyBuf1=iCustom (NULL,0," PerkyAsctrend1 ",5,250,1,1); そしてこのバッファの全てのシグナルは私のEAを通過して飛んでいくのです。空のExpert Advisorを2つのComment()ポイントで作成することも試してみましたが、結果は同じでした。売りの信号が出ません。
理解する手助けをしてくれないか。
インジケーターを添付したい

バッファ0に買いの信号、バッファ1に売りの信号

スクリプトでテストする。

//+------------------------------------------------------------------+
//|                                                         Test.mq4 |
//|                             Copyright © 2011, Trishkin Artyom A. |
//|                                           support@goldsuccess.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, Trishkin Artyom A."
#property link      "support@goldsuccess.ru"
//                   Skype: artmedia70

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   int count=WindowBarsPerChart();
   for (int i=0; i<count; i++) {
      double buf0=iCustom(Symbol(),Period(),"PerkyAsctrend1_1",4,250,0,i);
      double buf1=iCustom(Symbol(),Period(),"PerkyAsctrend1_1",4,250,1,i);
      if (buf0!=EMPTY_VALUE) Alert("В буфере 0 на баре ",iBarShift(Symbol(),Period(),Time[i])," сигнал на Buy = ",DoubleToStr(buf0,Digits));
      if (buf1!=EMPTY_VALUE) Alert("В буфере 1 на баре ",iBarShift(Symbol(),Period(),Time[i])," сигнал на Sell = ",DoubleToStr(buf1,Digits));
      }
//----
   return(0);
  }
//+------------------------------------------------------------------+