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

 
Artyom Trishkin:

正直、このSBの資料は使ったことがない。しかし、そこで、どのような方法で、色が設定されているのか、SBを見ることを妨げるものは何でしょう。出品しているもの。

- はオブジェクト名で、CPanel、CEDIT、CBmpButton、CWndClientの各クラス です。

そして、色が格納されるこれらのクラスのメンバーの名前を見つけ、どのメソッドで初期化または変更できるかを知る必要があります。

そして、それらをまず初期化して、それからオブジェクト自体を構築することになるでしょう。

色はDefinesで定義し、ObjectSetInteger()でオブジェクトに色を付けています。今のところ私もこの方法で直接塗装しています。でも、OOPでやってみたいです。なるほど、修正するパブリックメソッドが別になければ、プライベートメンバーには通じないのですね。ただ、継承や仮想メソッドについてはそれほど詳しくなく、まだ「泳がせ」て勉強している段階です。OK、サービスデスクにカラーリングのパブリックメソッドを作ってもらうよう頼んでみます。
 
LRA:
エラーメッセージを クリックします。カーソルは、変数名を示します。宣言される必要があります
ありがとうございました。
 
Kedrov:
ありがとうございました。

このフォーラムでは、逆コンパイルしたコードを投稿してはいけません。コードを掲載せず、写真だけというのはよくわかります。しかし、それは盗まれたソフトウェア製品を扱っていることを意味します。これは、ここでは強く推奨されません。なんというか地域社会の倫理に反する行為ここでのフォーラムとリソースライオンのシェアのフォーラムのユーザーはプログラマである - 我々は独自のコードを書いたり、私たちの同僚の公共の作品を使用しています。でも、他人の盗んだコード(ここでも他人のかも)を使って、作り直すわけです。一般的に、ここで活動を開始するのは得策ではありません。

 
Vasiliy Pushkaryov:
色はDefinesで定義し、ObjectSetInteger()関数でオブジェクトに色をつけます。今のところ、この方法で直接絵を描くこともしています。でも、OOPでやってみたいです。なるほど、修正するパブリックメソッドが別になければ、プライベートメンバーには通じないのですね。ただ、継承や仮想メソッドについてはそれほど詳しくなく、まだ「泳がせ」て勉強している段階です。なるほど、着色用のパブリックメソッドを作るようサービスデスクに頼んでみます。もし他の方法で可能なら、方法を教えてもらえるかもしれません。

一時的に、このクラスをあなたのIncludeyour_folderにコピーし、色を格納するために必要なクラスの メンバー変数と、それらを設定し返すためのパブリックメソッドを入れてください。

さらに-すでに必要としていることができるようになります。マイナス点 - 元のクラスのSBを更新すると、リファインがある場合があり、それがないので、必要なメソッドを再度更新したクラスにコピー&ペーストしなければならない。

...まあ、定義なしで静かに色を変える可能性がないのは不思議ですが・・・。

 

ヘルプ - すべての商品のすべてのオープンポジションの ボリューム(合計ロット数)の情報をすばやく取得する方法を教えてください。機能を教えてください。

 
Aleksey Vyazmikin:

ヘルプ - すべての商品のすべてのオープンポジションの ボリューム(合計ロット数)の情報をすばやく取得する方法を教えてください。機能を教えてください。


関数 GetAmountLotFromOpenPos()。

この関数は、未決済ポジションのロット数を返します。カウント位置をより正確に選択するために、外部パラメータで指定します。

  • sy- 市場商品の名前。このパラメータを設定すると、指定されたシンボルの位置のみを考慮するようになります。デフォルト値 -"" は任意のマーケット商品を意味する。NULL は現在の商品を意味する。
  • op- 貿易業務、ポジションタイプ。有効な値:OP_BUYOP_SELL、または-1。初期値-1 は任意の位置を意味する。
  • mn- 位置の識別子,MagicNumber.デフォルト値-1 は、任意の識別子を意味する。

 
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает сумму лотов открытых позиций                        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ( ""  - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - торговая операция          ( -1  - любая позиция)                  |
//|    mn - MagicNumber                ( -1  - любой магик)                    |
//+----------------------------------------------------------------------------+
double GetAmountLotFromOpenPos(string sy="", int op=-1, int mn=-1) {
  double l=0;
  int    i, 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) {
              l+=OrderLots();
            }
          }
        }
      }
    }
  }
  return(l);
}
 
Vladimir Zubov:

ありがとうございます。

 

ジグザグを閾値(深さ(ポイント単位)、nポイント通過後に高(低)を形成、深さ=ポイント*)で指定する場合について、アドバイスをお願いします。ジグザグの加算描画を示すポイントの連鎖(ArrUp(ArrDn))がある。つまり、最後のポイントがArrUpで、その後深度が下がって最初のポイントArrDnが形成され、その後価格が下がるに従ってArrDnポイントが連続して形成される(加算描画)。深さのインデントがあるように、アルゴリズムを構築しなければならないのです。多分、forループだと思うのですが、解らないのです。

//+------------------------------------------------------------------+
//|                                                       FastZZ.mq4 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, Yurich"
#property link      "https://login.mql5.com/ru/users/Yurich"
//---
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Red
#property indicator_color2 Red
#property indicator_color3 Gold
#property indicator_color4 DodgerBlue
#property indicator_width3 3
#property indicator_width4 3

//--- input parameters
extern int  Depth=10;
//---
double zzH[],zzL[];
double depth;
int last,direction,pbars;
datetime lastbar;
double ArrUp[];
double ArrDn[];
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexBuffer(0,zzH);
   SetIndexBuffer(1,zzL);
   SetIndexBuffer(2,ArrUp);
   SetIndexBuffer(3,ArrDn);
   SetIndexStyle(0,DRAW_ZIGZAG);
   SetIndexStyle(1,DRAW_ZIGZAG);
   SetIndexStyle(2,DRAW_ARROW);
   SetIndexStyle(3,DRAW_ARROW);
   SetIndexArrow(2,159);
   SetIndexArrow(3,159);
   SetIndexEmptyValue(0,0.0);
   SetIndexEmptyValue(1,0.0);
   IndicatorDigits(Digits);
//----
   depth=Depth*Point;
   direction=1;
   last=0;
   pbars=0;
   lastbar=0;
   return(0);
  }
//+------------------------------------------------------------------+
int start()
  {
   int limit=Bars-IndicatorCounted()-1;
   if(lastbar!=Time[0])
     {
      lastbar=Time[0];
      last++;
     }
   if(MathAbs(Bars-pbars)>1) { last=Bars-1; limit=last;}
   pbars=Bars;
//---
   for(int i=limit; i>0; i--)
     {
      bool set=false;
      zzL[i]=0;
      zzH[i]=0;
      ArrUp[i]=EMPTY_VALUE;
      ArrDn[i]=EMPTY_VALUE;
      //---
      if(direction>0)
        {
         if(High[i]>zzH[last])
           {
            zzH[last]=0;
            zzH[i]=High[i];
            ArrUp[i]=High[i];
            if(Low[i]<High[last]-depth)
              {
               if(Open[i]<Close[i])
                 {
                  zzH[last]=High[last];
                  ArrUp[last]=High[last];
                 }
               else direction=-1;
               zzL[i]=Low[i];
               ArrDn[i]=Low[i];
              }
            last=i;
            set=true;
           }
         if(Low[i]<zzH[last]-depth && (!set || Open[i]>Close[i]))
           {
            zzL[i]=Low[i];
            ArrDn[i]=Low[i];
            if(High[i]>zzL[i]+depth && Open[i]<Close[i])
              {
               zzH[i]=High[i];
               ArrUp[i]=High[i];
              }
            else direction=-1;
            last=i;
           }
        }
      else //direction<0
        {
         if(Low[i]<zzL[last])
           {
            zzL[last]=0;
            zzL[i]=Low[i];
            ArrDn[i]=Low[i];
            if(High[i]>Low[last]+depth)
              {
               if(Open[i]>Close[i])
                 {
                  zzL[last]=Low[last];
                  ArrDn[last]=Low[last];
                 }
               else direction=1;
               zzH[i]=High[i];
               ArrUp[i]=High[i];
              }
            last=i;
            set=true;
           }
         if(High[i]>zzL[last]+depth && (!set || Open[i]<Close[i]))
           {
            zzH[i]=High[i];
            ArrUp[i]=High[i];
            if(Low[i]<zzH[i]-depth && Open[i]>Close[i])
              {
               zzL[i]=Low[i];
               ArrDn[i]=Low[i];
              }
            else direction=1;
            last=i;
           }
        }
     }
//----
   zzH[0]=0;
   zzL[0]=0;
//----
   return(0);
  }
//+------------------------------------------------------------------+
 

皆さん、こんにちは。

EAを停止して、新しいローソク足が表示されたら起動する方法を教えてください。