初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 498

 
Artyom Trishkin:

間違いではない:グローバルな i (青)を持つループと、ローカルな i (赤)を持つ別のループ

コンパイラは次のような文句を言うでしょう。
 
pako:
コンパイラは誓うだろう。
はい、そうなります。でも、今まで以上に質問にぴったりです ;)
 
Artyom Trishkin:

間違いではない:グローバルな i (青)を持つループと、ローカルな i (赤)を持つ別のループ

私でもわかる...。i (青色)がフラット、i (赤色)がトイレです。:))))

 
EAでZigZagを実行する方法をアドバイスしてください。EAは一般的に動作していますが、多くの信号を残して、それにZZを接着し、動作を停止した。デモでは、単一の順序を購入していない、すべてでデバッグ、テスト上のファイルZigZagを開くことができない、何をすることがありますか?
xtern string   ZigZag                       = "Данные ZigZag";
extern int      InpDepth                      = 20;
extern int      InpDeviation                  = 5;
extern int      InpBackstep                   = 3;

double MacdCurrent,SignalCurrent,SignalMAPrevious,SignalMAThis,
       PriceCurrentOpen,PriceCurrentClose,SignalParabolic,ZZThis,ZZPrevious;
int    ticket;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
 if (Digits==3||Digits==5)
 {
  slippage*=10;
 }   
 return(INIT_SUCCEEDED);
} 
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
 datetime EaStartTime = StringToTime(StartTime);  // время начала работы советника
 datetime EaEndTime = StringToTime(EndTime);      // время окончания работы советника
 datetime CurrTime = TimeCurrent();               // это если нужно взять время терминала
 if (CurrTime < EaStartTime || CurrTime >= EaEndTime)
  return;                                         // если еще не время торговать - выход
 {
  MacdCurrent=iMACD(NULL,0,InpFastEMA,InpSlowEMA,InpSignalSMA,Macd_Applied_Price,MODE_MAIN,0);
  SignalCurrent=iMACD(NULL,0,InpFastEMA,InpSlowEMA,InpSignalSMA,Macd_Applied_Price,MODE_SIGNAL,0);
  SignalMAPrevious=iMA(NULL,0,InpMAPeriod,InpMAShift,InpMAMethod,MA_Applied_Price,1);
  SignalMAThis=iMA(NULL,0,InpMAPeriod,InpMAShift,InpMAMethod,MA_Applied_Price,0);
  SignalParabolic=iSAR(NULL,0,InpSARStep,InpSARMaximum,0);
  ZZThis=iCustom(NULL,0,ZigZag,InpDepth,InpDeviation,InpBackstep,0,0);
  ZZPrevious=iCustom(NULL,0,ZigZag,InpDepth,InpDeviation,InpBackstep,0,4);
   if (CountTrades()==0) CheckForOpen();
 }
}  
void CheckForOpen()
 
Alexey Viktorov:

私でもわかったんです...。i (青色)がフラット、i (赤色)がトイレです。:))))

あなたはポピュラーサイエンスの本を書くべきです、あなたは明らかに物事を簡単に説明する才能があります ))

宣言した上で

#property strict

は、ローカルのiがグローバルのiを上書きするという警告を出すだけです。

declaration of 'i' hides global declaration at line 20 test.mq4 25 13

 
Alexey Volchanskiy:

あなたはポピュラーサイエンスの本を書くべきです、あなたは明らかに物事を簡単に説明する才能があります ))

宣言した上で

は、ローカルのiがグローバルのiを上書きするという警告を出すだけです。

declaration of 'i' hides global declaration at line 20 test.mq4 25 13

私の読者は、このようなシンプルな説明をする明確な才能を持っています。私にはそんな才能はありません...。男は作家ではなく、読書家だ...。
 
Alexey Viktorov:
アルチョムが説明していたのは、そういうことだ。私にはそんな才能はありません...。あなたは作家ではなく、読者なのだから...。
まあ...私たちはシベリアのコットンマウスです。)
 
Nickolay72:
こんにちは、あなたは私にEAでZigZagを実行する方法を伝えることができます、一般的には、動作しますが、左の信号が多く、それに接着ZZは、動作を停止した。テスト上のファイル ZigZagを開くことができない、すべてでデバッグは、デモで、単一の順序を購入しませんでした行くことはありません。

カスタムインジケータの 中にZigZagという ファイルがありますが、EAからアクセスしたときと同じようにそこに呼び出されているのでしょうか?

  ZZThis=iCustom(NULL,0,ZigZag,InpDepth,InpDeviation,InpBackstep,0,0);
  ZZPrevious=iCustom(NULL,0,ZigZag,InpDepth,InpDeviation,InpBackstep,0,4);
 
Vladimir Zubov:

Yesの場合、ZigZag ファイルはカスタムインジケータに あり、Expert Advisorからアクセスする際にそのまま呼び出されますか?

ファイル名は、拡張子なしで引用符で囲んでください。不思議と、うまくコンパイルできるんです。ジグザグ 変数の原型は何ですか?

ZZThis=iCustom(NULL,0,"ZigZag",InpDepth,InpDeviation,InpBackstep,0,0);
 

5のシングルマイナスのサグを平準化または補正する方法

機能はあるが、動作しない

//+------------------------------------------------------------------+
//| Считаем лот в зависимости от полученного профита                 |
//+------------------------------------------------------------------+
double Volume(void)
  {
   double lot=Lots;
//--- Получим доступ к истории
   HistorySelect(0,TimeCurrent());
//--- Сделки в истории
   int orders=HistoryDealsTotal();
//--- Тикет последней сделки  
   ulong ticket=HistoryDealGetTicket(orders-1);
   if(ticket==0)
     {
      Print("Нет сделок в истории! ");
      lot=Lots;
     }
//--- Профит сделки
   double profit=HistoryDealGetDouble(ticket,DEAL_PROFIT);
//--- Лот сделки
   double lastlot=HistoryDealGetDouble(ticket,DEAL_VOLUME);
//--- Профит отрицательный
   if(profit<0.0)
     {
      //--- Увеличиваем следующий лот
      lot=lastlot*KLot;
      Print(" Cделка закрыта по стопу! ");
     }
//--- Приводим лот к минимальному
   double minvol=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
   if(lot<minvol)
      lot=minvol;
//--- Если лот больше максимального то начальный лот
   if(lot>MaxLot)
      lot=Lots;
//--- Возвращаем торговый объем
   return(lot);
  }
//+------------------------------------------------------------------+
//| Смотрим тип последней закрытой сделки                            |
//+------------------------------------------------------------------+
int LastDealType(void)
  {
   int type=0;
//--- Получим доступ к истории
   HistorySelect(0,TimeCurrent());
//--- Сделки в истории
   int orders=HistoryDealsTotal();
//--- Тикет последней сделки  
   ulong ticket=HistoryDealGetTicket(orders-1);
//--- Нет сделок в истории
   if(ticket==0)
     {
      Print("Нет сделок в истории! ");
      type=0;
     }
   if(ticket>0)
     {
      //--- Последняя сделка BUY 
      if(HistoryDealGetInteger(ticket,DEAL_TYPE)==DEAL_TYPE_BUY)
        {
         type=2;
        }
      //--- Последняя сделка SELL
      if(HistoryDealGetInteger(ticket,DEAL_TYPE)==DEAL_TYPE_SELL)
        {
         type=1;
        }
     }
//---
   return(type);
  }
理由: