[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 157

 

友よ、5桁の価格を出力するために必要なことを教えてくれませんか?例えば、こんなケースを書いています。

int Quant_Bars=15;

int Ind_max =ArrayMaximum(High,Quant_Bars,1);

double Maximum=High[Ind_max];

Alert("Максимум = ",Maximum);

そして、小数点以下4桁の価格をプリントアウトします。

よろしくお願いします))

 
rid >> :

そして、この関数をコードのどの場所に配置したのですか?

コードを書いている初期段階ですが...。だから、入れるところがない...。

マジックナンバーで注文数を計算する方法を幼稚な私に説明してくれませんか))


 
Alex5757000 писал(а)>>

友よ、5桁の価格を出力するために必要なことを教えてくれませんか?例えば、こんなケースを書いています。

int Quant_Bars=15;

int Ind_max =ArrayMaximum(High,Quant_Bars,1);

double Maximum=High[Ind_max];

Alert("Максимум = ",Maximum);

そして、小数点以下4桁の価格をプリントアウトします。

よろしくお願いします))

DoubleToStr()は試されましたか?

 
ArtY0m писал(а)>>

コードを書いている初期段階ですが...。だから、入れるところがない...。

マジックナンバーで注文数を計算する方法を幼稚な私に説明してくれませんか))


一番簡単な方法は、ここを見ることですhttps://book.mql4.com/ru/

 

よろしくお願いします。全く理解できない

EA1.mq4(添付)のビジュアルテスト 中に、3-cciインジケータ(添付)をチャートに貼り付けた場合、見かけ上、全く同じパラメータで計算されたcciインジケータシグナルと実際のcci(右上隅のオブジェクトテキスト)が一致しないのですが、どうすればよいでしょうか?

なぜ?

そして、なぜかこのインジケーターのアラートが機能しない。

ファイル:
pack_1.rar  2 kb
 
ロータイムフレームのチャートにハイタイムフレームのローソク足を描く(つまり両方のローソク足を同時に描く)インジケーターの参考文献が見当たりません。誰が教えてくれるの?
 
ArtY0m >> :

コードを書いている初期段階ですが...。だから、入れるところがない...。

注文数の計算方法をマジックナンバーで幼稚に説明してくれませんかね(笑)。


エキスパートアドバイザーは、(最もシンプルな形で)いくつかのパーツから構成されています。

まず、外部パラメータとグローバル変数が設定されます。

その後に、通常、初期化関数と非初期化関数が来る。

その後、START 関数が実行され、Expert Advisor の主要な動作アルゴリズムが設定されます。

次に、補助的なユーザー定義関数が来る。

これらのユーザー定義関数は、必要に応じてSTART関数の中で使用(呼び出し)されます。

こんな感じです。

//+------------------------------------------------------------------+
//|                                                    ZZ expert.mq4 |
//|                                        Copyright © 2008, Rid     |
//|                                            Rid                   |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, Rid ."
#property link      "Rid "

extern string     _  = "---- ОБЩИЕ ПАРАМЕТРЫ -----"; 
extern int       MAGIC = 777;
extern double    lots=0.1;

extern string     __  = "---- ПАРАМЕТРЫ BUY -----"; 
extern int       StopLossBuy=110;
extern int       TakeProfitBuy=55;

extern string     ___  = "---- ПАРАМЕТРЫ SELL -----"; 
extern int       StopLossSell=110;
extern int       TakeProfitSell=55;

extern string    _____= "Параметры функции ТРЕЙЛИНГ СТОП";
extern bool   UseTrailing = true;//Выключатель трейлинг стопа
extern int    MinProfit = 25;    //порог включения трейлин стопа
extern int    TrailingStop = 25;// величина трейлинг стопа
extern int    TrailingStep = 5; // шаг трейлинг стопа


int ticket;
bool  gbDisabled  = False;             // Флаг блокировки советника
bool  gbNoInit    = False;             // Флаг неудачной инициализации
//-- Подключаемые модули --
#include <stderror.mqh>
#include <stdlib.mqh>

//+------------------------------------------------------------------+
//| initialization function                                          |
//+------------------------------------------------------------------+
int init()
  {
gbNoInit= False;  
if (!IsTradeAllowed()) {
    Message("Для нормальной работы советника необходимо\n"+
            "Разрешить советнику торговать");
    gbNoInit= True; return;
  }
  if (!IsLibrariesAllowed()) {
    Message("Для нормальной работы советника необходимо\n"+
            "Разрешить импорт из внешних экспертов");
    gbNoInit= True; return;
  }
  }

//жжжжжжжжжжжжж ФУНКЦИЯ СТАРТ жжжжжжжжжжжжжжжжжж+

int start()
  {
//Отображаем на графике число открытых позиций
// с задааным магиком "MAGIC"
Comment("Число бай позиций = ", NumberOfPositions(NULL,OP_BUY, MAGIC), "\n",
"Число селл позиций = ", NumberOfPositions(NULL,OP_SELL, MAGIC),"\n",
"Хи-Хи, тра-ля-ля");

if ( UseTrailing) TrailPositions(); // выключатель трейлинг стопа 
  
//-------- открываем позиции 
if ( NumberOfPositions(NULL, OP_BUY, MAGIC)< 1){//если нет открытыз бай-поз
//открываем позицию бай:
ticket=OrderSend(Symbol(),OP_BUY, lots,Ask,3,Ask-Point* StopLossBuy,
Ask+Point* TakeProfitBuy,"Хи-Хи, тра-ля-ля", MAGIC,0,Blue);
                                             } 
//--------------------------------------------------------------
    return(0);//конец функции int start()
  }
//жжжжжжжжжжж КОНЕЦ ФУНКЦИИ СТАРТ жжжжжжжжжжжжжжжж+


//жжжжжжж ПОЛЬЗОВАТЕЛЬСКИЕ ФУНКЦИИ жжжжжжжжжжжжжжж+
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает количество позиций.                                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int NumberOfPositions(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), kp=0;

  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) kp++;
          }}}}}  return( kp);}

//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж+
void TrailPositions() // функция трейлинг стоп
{
  int Orders = OrdersTotal();
  for (int i=0; i< Orders; i++) {
    if (!(OrderSelect( i, SELECT_BY_POS, MODE_TRADES))) continue;
    if (OrderSymbol() != Symbol()) continue;    
     if (OrderType() == OP_BUY && OrderMagicNumber()== MAGIC)  {
      if (Bid-OrderOpenPrice() > MinProfit*Point) {
        if (OrderStopLoss() < Bid-( TrailingStop+ TrailingStep-1)*Point) {
          OrderModify(OrderTicket(), OrderOpenPrice(), Bid- TrailingStop*Point,
                                                     OrderTakeProfit(), 0, Blue);
        } } }
    if (OrderType() == OP_SELL && OrderMagicNumber()== MAGIC)  {
      if (OrderOpenPrice()-Ask > MinProfit*Point) {
        if (OrderStopLoss() > Ask+( TrailingStop+ TrailingStep-1)*Point 
                                                       || OrderStopLoss() == 0) {
          OrderModify(OrderTicket(), OrderOpenPrice(), Ask+ TrailingStop*Point,
                                                      OrderTakeProfit(), 0, Blue);
        } } }      } }

//+----------------------------------------------------------------------------+
//|  Вывод сообщения в коммент и в журнал                                      |
//+----------------------------------------------------------------------------+
void Message(string m) {
  Comment( m);
  if (StringLen( m)>0) Print( m);
}        

今、こんな疑問はないかな!?

 

もう一つ質問ですが、現在の価格からではなく、未決済のポジションから 保留注文を出すことは可能でしょうか?

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

 

もちろん、できますよ。この保留中の注文は、証券会社が設定するストップ・レベルを満たすように、現在の価格から一定の距離を置いて発注する必要があるだけです。

例えば、前回の注文開始価格から100pips離れたところに保留注文を出したが、現在の価格に近づきすぎた場合、ログは注文を開くためにエラー130を 返します。

 
rid >> :

もちろん、できますよ。この保留中の注文は、証券会社が設定するストップ・レベルを満たすように、現在の価格から一定の距離を置いて発注する必要があるだけです。

例えば、前回のポジション開始価格から100ポイント離れた位置に注文を設定しても、現在の価格に近づきすぎた場合、ログは注文を開くためにエラー130を 返します。

秘密でないなら、どうやって?