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

 
Mikhail Tkachev:

地域の皆様のお力をお借りしたいのですが...。
MQL5グローバルオブジェクトを正しく宣言し、作成する方法は?

グローバルなものはここで宣言されています

//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//--- 
int      Global_1;
double   Global_2;
string   Global_3;
long     Global_4;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
 
Alexey Viktorov:

ドキュメントを読めと言われても、どうしたらいいのかわからない。それを読んで、何らかの理由で標準機能が適さないのであれば、素直にそう言ってくれればいいのに・・・。

さて、「送る」ですが、誰に送るか、どこに送るかはモデレーターに任せて......!?バン、例えば...誰だと思う?通常の関数については、jsonのパースやjsonファイルの保存・書き込みはドキュメントで見たことがないですね。でも、あなたはいつものように、ドキュメントの秘密の部分を知っていて、そこに全部書いてある......。そして、私は知らなかった...なんてこった恥ずかしながらアレクセイにしっぺ返しを食らうところだった...。:)

 

同時に最大 2つの注文を開くつもりで、私はそう置くと、pos_totalが開かずに、いずれかを開くことはありません。


void OPENORDER(string ord)

  {
    int pos_total=PositionsTotal();
    double priceL=m_symbol.Ask();
   if (pos_total>=2)
   {
   if(ord=="Sell")      
   
        //--- check for free money
            if(m_account.FreeMarginCheck(Symbol(),ORDER_TYPE_BUY,my_lot,priceL)<0.0)
               printf("We have no money. Free Margin = %f",m_account.FreeMargin());
            else
      if(!m_trade.Sell(my_lot,Symbol(),m_symbol.Bid(),my_SL,my_TP,""))
         Print("BUY_STOP -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of Retcode: ",m_trade.ResultRetcodeDescription(),
               ", ticket of order: ",m_trade.ResultOrder());                     // Если sell, то не открываемся
     double priceS=m_symbol.Bid();
   if(ord=="Buy")  
         //--- check for free money
            if(m_account.FreeMarginCheck(Symbol(),ORDER_TYPE_SELL,my_lot,priceS)<0.0)
               printf("We have no money. Free Margin = %f",m_account.FreeMargin());
            else
      if(!m_trade.Buy(my_lot,Symbol(),m_symbol.Ask(),my_SL,my_TP,""))
 
         Print("Buy -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of result: ",m_trade.ResultRetcodeDescription(),
               ", ticket of deal: ",m_trade.ResultDeal());
   return;
 }
}


私は何を間違えているのだろう?

 
Eugen8519:

同時に最大 2つの注文を開くつもりで、私はそう置くと、pos_totalが開かずに、いずれかを開くことはありません。



私は何を間違えているのだろう?

すでに2つ以上のポジションをお持ちの方は、オープンしてくださいと書いています
if (pos_total<=2)
 
Alexey Viktorov:

マカー、あなたは以前は正しいことをやっていたのに、今は愚かなことをやりたがっている......。

小学校5年生くらいの算数を思い出してみてください。(-3)-(-7)はいくらで、(-3)+(-7)はいくらなのか?

電卓で確認するのは難しい、Excellなら安心です。


アレクセイは小学校5年生から数学ができる。ブラボー、アレクセイ。キャプテンハインドサイトだけでいい。:)

 
Mihail Matkovskij:

アレクセイは小学校5年生まで数学を知っている。ブラボー、アレクセイ。

この場合、あなたは間違っています。
 
MakarFX:

はい、ありがとうございます。結論に飛びつきました。ちゃんとした)

問題は、関数が負の値を持つ可能性があることではなく、なぜスワップや手数料を利益に加えるのか、ということだった。あなたとアレクセイは、おそらく理解していなかったのでしょう。

Tsaryoff5614は 履歴の中の注文利益を計算したかったようで、その関数がlastloss(英語なら)と呼ばれていました。

https://www.mql5.com/ru/forum/160683/page1559#comment_23786144

あなたは自分自身と私を混同しています。そして、あなたとアレクセイは...馬鹿な...

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2021.08.02
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
MakarFX:
この場合、あなたは間違っています。

ヒントありがとうございます。しかし、全くフィルタリングされず、5つのポジションまで開いてしまうのです

   if(InpTrailingOrderLimit==0)
        return;
   for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of open positions
      if(m_position.SelectByIndex(i))
         if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic)
           {
            if(m_position.PositionType()==POSITION_TYPE_BUY)
              {
               if(m_position.PriceCurrent()-m_position.PriceOpen()>ExtTrailingOrderLimit+ExtTrailingOrderStep)
                  if(m_position.StopLoss()<m_position.PriceCurrent()-(ExtTrailingOrderLimit+ExtTrailingOrderStep))        
                       OPENORDER("Buy");
              
                  
              }
            else
              {
               if(m_position.PriceOpen()-m_position.PriceCurrent()>ExtTrailingOrderLimit+ExtTrailingOrderStep)
                  if((m_position.StopLoss()>(m_position.PriceCurrent()+(ExtTrailingOrderLimit+ExtTrailingOrderStep))))
                        OPENORDER("Sell");


ポジションを 開くように指示するのですが、pos_totalをどこに入れてもうまくいきません。

 
Eugen8519:

ヒントありがとうございます。しかし、全くフィルタリングされず、5つのポジションまで開いてしまうのです


ポジションを開くように 言っているのですが、pos_totalをどこに入れても、うまくいきません。


を削除する必要はありません。
if (pos_total<=2)

書いたような看板を変えたい。

 
Mihail Matkovskij:

問題は、関数が負の値を持つことができるということではなく、なぜスワップや手数料を利益に 加えるのかということでした。あなたとアレクセイは、おそらく理解していなかったのでしょう。

Tsaryoff5614は 利益を計算したかったのですが、その関数はlastlossと呼ばれていました。彼は自分自身と私を混同していた。そして今、あなたとアレクセイは...馬鹿な...

だからそれを足して、その期間の利益をすべて計算できるようにするのです。