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

 
Mihail Matkovskij #:

上に全部書きました。書き込みをよく読み直してみてください。あなたの仕事は、決して難しいものではありません。掲示板でいがみ合うことなく、作業に集中すれば大丈夫です。頑張ってください。

"口喧嘩 "は先生がチャットルームに入ることです。申し訳ないが、あなたは明晰な明晰さより、傲慢な傲慢さを持っている。私も13歳の頃、そうでしたから。
 
Выше я всё написал

何を書いたんだ?アレイのことですか?最初にやったのは、インジケーターの定義ということでしょうか?それとも、2つの注文を開いて、1つ目のTFを2つ目に入れる方法についてでしょうか?このようなすっきりした解決策が、副次的な問題の数々を引き起こしているのです。

 
Nerd Trader #:
"bicker" - 先生がチャットルームに入りました。悪いけど、要点を書くより自我を突き出してるんだよね。私も13歳の頃、そうでしたから。

私の重要性とかではなく、あなたが持っていないプログラミングの知識が重要なのです。もしあなたが大学時代に授業中にそのような振る舞いをしたら、少なくとも先生に叱られるか、追い出されるでしょう。その時に、自分のエゴを伝えるのでは...?:)

知識が ないのは、初心者だからではなく、無知だから...。EAとインジケーターは違う」と言われても、「何が違うんだ」と言い続けるでしょう。:)

私は、「インジケータが取引を開始する」、「ボットが取引時間枠を必要とする」と書きました。このような質問には、論理性を欠くため、誰も返答すらしない。しかし、私はそれに答えようとした。非難や侮辱をたくさん受けました。それは「ありがとう」の代わりなのか...?
 
Nerd Trader リモートサーバーで 動作します。ソケットは使えるのですが、やはり私には難しいです。

マジコンで暗号化する。暗号化・復号化の全手順を記事で紹介しました。

 
Artyom Trishkin #:

マジックを暗号化する。暗号化・復号化の全手順を記事にしています。

リンクを教えてください、毎回見つけるのに30分くらいかかります)暗号化に対するアプローチが良い。

 
Valeriy Yastremskiy #:

リンクを教えてください、毎回探すのに30分くらいかかります)コーディングへのアプローチが良い。

私自身は覚えていないのですが......)

私も30分ほど探してみます・・・。

 
Nerd Trader #:

ボットがリモートサーバーで動いているので、コメントにTFを書く、それならいいのですが、ボリュームの一部を閉じるとチケットに上書きされてしまうので、これではうまくいきません。

異なる時間帯の注文に対して、個別のマジックナンバーを行う。この数値は、部分的に閉じる際にも変わりません。

//+-----------------------------------------------------------------------------+
//|  Описание : Автоматическая генерация магического номера                     |
//|             Generate Magic Number                                           |
//|             Магический номер генерируется в зависимости от инструмента      |
//|             и таймфрейма                                                    |
//+-----------------------------------------------------------------------------+
int GenerateMagicNumber(int mn)
  {
   int      GenerateMN = 0;
   int      SymNumber = 0;
   int      PMinuts = _Period;
// 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946
   if(StringFind(_Symbol,"BTC",0)>=0)  //1
      SymNumber = 5;
   if(StringFind(_Symbol,"ETH",0)>=0)  //2
      SymNumber = 8;
   if(StringFind(_Symbol,"BCH",0)>=0)  //3
      SymNumber = 13;
   if(StringFind(_Symbol,"LTC",0)>=0)  //4
      SymNumber = 21;
   if(StringFind(_Symbol,"XRP",0)>=0)  //5
      SymNumber = 34;
   if(StringFind(_Symbol,"SOL",0)>=0)  //6
      SymNumber = 55;
   if(StringFind(_Symbol,"LINK",0)>=0) //7
      SymNumber = 89;
   if(StringFind(_Symbol,"XLM",0)>=0)  //8
      SymNumber = 144;
   if(StringFind(_Symbol,"TRX",0)>=0)  //9
      SymNumber = 233;
   if(StringFind(_Symbol,"ATOM",0)>=0) //10
      SymNumber = 377;
   if(StringFind(_Symbol,"XMR",0)>=0)  //11
      SymNumber = 610;
   if(StringFind(_Symbol,"ADA",0)>=0)  //12
      SymNumber = 987;
   if(StringFind(_Symbol,"DOT",0)>=0)  //13
      SymNumber = 1597;
   if(StringFind(_Symbol,"DOGE",0)>=0) //14
      SymNumber = 2584;

   GenerateMN = (int)(SymNumber+PMinuts+mn);

   return (int)(GenerateMN);
  }
//--- End ---
 
Volodymyr Zubov #:

異なる時間帯の注文に対して、個別のマジックナンバーを作る。この数値は、部分的に閉じた状態でも変わりません。

また、すでに順番・位置から読み取れるのに、なぜマジックナンバーで記号を暗号化するのでしょうか?また、なぜこのような値をSymNumberに設定したのでしょうか?

 
Volodymyr Zubov #:

異なる時間帯の注文に対して、個別のマジックナンバーを作る。この数値は、パーシャルクローズ中も変わりません。

StringFindをありがとうございました。でも、その方がずっと楽なんです。

int GenerateMagicNumber(int mn)
  {
   int      GenerateMN = 0;
   int      PMinuts = _Period;

   GenerateMN = (int)(PMinuts+mn);

   return (int)(GenerateMN);
  }

そして、後でOrderSymbol()を使って注文記号を取得するのです。

 

押忍

シグナルを受信(例:買い)したら、ロット条件を満たした後に反対注文(売り)を出す必要がありますね。

コードを組みました。

// Получим значение индикатора
   dMA = iMA(Symbol(), 0,PeriodMA, MovingShift, MODE_SMA, PRICE_CLOSE, 0); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.

// Если нет открытых ордеров, то входим в условие
      if(CountOrders()==0)
     {
// Если появился сигнал на покупку, то откроем ордер на покупку
      if(bSignalBuy() == true)
         vOrderOpenBuy();
         
         if((bSignalBuy() == true)&&(GetLotSize()>LotControl))
         vOrderOpenSell();
// Если появился сигнал на продажу, то откроем ордер на продажу
      if(bSignalSell() == true)
         vOrderOpenSell();
  
         if((bSignalSell() == true)&&(GetLotSize()>LotControl))
         vOrderOpenBuy();
     }

が、ある条件が発生すると

(GetLotSize()>LotControl)

しかし、この場合、2つの反対の注文が同時に開かれています。 どうすれば「修正」できますか?