MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 711

 
Artyom Trishkin:

より迅速な把握と理解

価格を書く、その後どのようにそれらを取る、いつ何を?

void PriceTimePos(string sy="",int op=-1,int mn=-1)
  {
  double Цены[3];
   datetime t;
   bool daa;
   int d,k_=OrdersTotal(),typ_;
   double   r=0;
   int      i,k=OrdersHistoryTotal();

   if(sy=="0") sy=Symbol();
   for(i=0; i<k; i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
        {
         if(OrderSymbol()==Symbol())
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(op<0 || OrderType()==op)
                 {
                  if(mn<0 || OrderMagicNumber()==mn)
                    {
                     if(OrderCloseTime()>=TimeCurrent()-2440*60)
                       {
                        t=OrderCloseTime();
                        r=OrderOpenPrice();
                        sl=OrderStopLoss();
                        tp=OrderTakeProfit();
                        lot=OrderLots();
                        typ_=OrderType();
                        Print("OpenPrice",r);
                       Цены[0]=OrderOpenPrice();
                    
                       }
                    }
                 }
              }
           }
        }
     }
//
  }
の代わりに、このループに挿入する。
                        daa=false;
                        for(i=0; i<k; i++)
                          {
                           if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
                             {
                              if((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op))
                                {
                                 if(OrderType()>1 && OrderType()<6)
                                   {
                                    d=MarketInfo(OrderSymbol(), MODE_DIGITS);
                                    r=NormalizeDouble(r, d);
                                    if(r==NormalizeDouble(OrderOpenPrice(),d)) daa=true; 
                                   }
                                }
                             }
                          }
 

こんにちは、最後の注文がマイナスで決済された後、ストップロスを 増加させる関数を作りました。

最大値に達するまで、設定したステップで増加させます。その結果、常にストップロスの元の値が設定されます。

どうしたんですか?ありがとうございました。

//+------------------------------------------------------------------+

ダブルSL()

{

double sL;

if(OrdersHistoryTotal()==0)

{

sL=StopLoss。

}

if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))

{

if(OrderProfit()>=0)の場合

{

sL=StopLoss。

}

if(OrderProfit()<0 && OrderType()==OP_BUY))

{

sL=OrderOpenPrice()-OrderStopLoss()+SLStep.SL=OrderOpenPrice()-OrderStopLoss()+SLStep;

}

if(OrderProfit()<0 && OrderType()==OP_SELL))

{

sL=OrderStopLoss()-OrderOpenPrice()+SLStep.SL=OrderStopLoss()-OrderOpenPrice()+SLStep;

}

}

if(sL>maxStep)

{

sL=StopLoss。

}

return(sL)です。

}

//+------------------------------------------------------------------+

 
Artyom Trishkin:
  1. voidでない関数から値を返すのは正しいのですが、新しいレールに切り替えた方がよいでしょう - 複雑なことは何もありません。
  2. すべてのディレクティブが綴られている場所、エラーコードを読んで - 彼らの説明はドキュメントにあり、すべてがうまくいくと複雑ではありません - 書く、コードの一番最初に#property strictディレクティブを挿入することを忘れないでください。
エラーコードは どこにあるのですか? このドキュメントはどこにありますか?
 
#property strict

int Count=0;

void OnInit()     
{
   Alert ("Сработала ф-ия init() при запуске");   // Сообщение
   return;                                                                     // Выход из init()
   }   
//--------------------------------------------------------------------
void OnStart()                                                                       // Спец. ф-ия start()
   {
   double Price = Bid;                                                      // Локальная перемен.
   Count++;                                                                      // Счётчик тиков
   Alert("Новый тик ",Count," Цена = ",Price);       // Сообщение
   return;                                                                        // Выход из start()
   }
void OnDeinit()                                                                              // Спец. ф-ия deinit()
   {
   Alert ("Сработала ф-ия deinit() при выгрузке");         // Сообщение
   return;                                                                                 // Выход из deinit()
   }

私の書き方が悪いのか?

次のようになります。http://prntscr.com/lu1kb9


現在のテンプレートの下にデータを挿入しようとしたところ

//+------------------------------------------------------------------+
//|                                                            п.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {

   Alert ("Сработала ф-ия init() при запуске");   // Сообщение
                                                                       // Выход из init()
     
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
Alert ("Сработала ф-ия deinit() при выгрузке");         // Сообщение
   return;
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
 
   double Price = PRICE_OPEN;                                                      // Локальная перемен.
   Count++;                                                                      // Счётчик тиков
   Alert("Новый тик ",Count," Цена = ",Price);       // Сообщение
   return;                                                                        // Выход из start()
   
   
  }
//+------------------------------------------------------------------+


でも、やっぱり違うんです。
Скриншот
Скриншот
  • prnt.sc
Снято с помощью Lightshot
 
助けてください、どなたか配列を渡して最大ドローダウンを計算できる関数をお持ちの方はいらっしゃいませんか?
 

こんにちは。

セルゲイ・コバレフさんのチュートリアルでemq-elをマスターしています。

そこからExpert Advisorをダウンロードし、コンパイルし、動作するようにも見えるのですが、コンパイルする際に、エラーではなく、警告のようなフィードバックが出ます。

エラーなしでコンパイルするには、何を変更すればよいのでしょうか?よろしくお願いします。

ファイル:
expert.mq4  28 kb
 
Sergey Branin:
エラーコードは どこにあるのですか? このドキュメントはどこにありますか?

本サイトのメニューで-を検索してください。

 
Artyom Trishkin:

本サイトのメニューで-を検索してください。

Artemさん、mql5のドキュメントがありますが、質問はmql4のセクションにあります。

セルゲイ・ブラニン
エラーコードは どこにあるのですか? このドキュメントはどこにありますか?

mql4のドキュメントは こちらです。MetaEditorでF1キーを押すこともできます。

Справочник MQL4
Справочник MQL4
  • docs.mql4.com
MetaQuotes Language 4 (MQL4) - встроенный язык программирования торговых стратегий, разработанный компанией MetaQuotes Software Corp. на основе своего многолетнего опыта в создании торгово-информационных платформ. Этот язык позволяет писать собственные программы-эксперты (Expert Advisors), автоматизирующие управление торговыми процессами и...
 
Alexey Viktorov:

Artyomさん、mql5のドキュメントはありますか?質問はmql4のセクションに あります。

mql4のドキュメントが あります。また、MetaEditorでF1キーを押した方がよいです

ああ...フォーラムで答えを待つより、F1に指を当てて必要なものを探すほうが早いですからね。訳が分からない.

 
こんにちは、私はプログラミングの初心者です。既成のコードがどこにもないんです。EAからカスタムインジケータを 制御するというか、何らかのイベントが発生したときにその外部パラメータ(1つ)を変更する必要がある、というものです。ロジックを簡単に説明すると、ロット(例えばポジション数)>定義済みの値の場合、インジケーターの外部設定(別のウィンドウ にあり、このEAとは関係ない)がインジケーターの再初期化なしにその場で変更されるのです。を通してやってみるのもいいかもしれません。
 string ServiceCustomIndicatorByIndexA(int nIndex);// я даже не знаю тут   ANSI или UNICODE нужно
и
int ServiceGetNamesIndicatorsMA(int hwndChart,int nWindow,string &asIndicators[],int nSize);   
どうすればいいかわからないのですが、どなたか簡単なコードブロックを書いていただけませんか。