初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 559

 
akarustam:

MT5でEAプログラムをテストしているときの不思議(画像ファイル参照)...残高がマイナスでもプラスの等価性はあるのか? また、残高がマイナスになるのはどんなときか?トレーディング・ネイションに転向する前は、何度も心変わりをして、まだ手をつけていなかったのですが...。そろそろ寝ようかな)

もし、オープンコードとセットに興味がある方がいらっしゃいましたら、教えてください。- 必ず掲載させていただきます。MT5をヘッジ付きで使いこなすようになり、今では、-奇跡、ですが)

奇跡は起きない。大きな黒字のオープンポジションと、残高を超える損失のクローズド ポジションがあるのですが。オープンポジションを維持できるだけの資金があるので、負けてはいない。
 
Artyom Trishkin:
奇跡は起きない。大きな黒字のオープンポジションがあり、バランスシートの大きさより大きな損失のクローズドポジションが あります。オープンポジションを維持するための資金が十分にあるため、デメリットはない。
そんな簡単なことなんです...。ありがとうございました。
 

私の間違いが何なのか、教えてください。

for(int i=0;i<N_Sell;i++) printf("OpenSellTime[%d] = %G",i,TimeToString(OpenSellTime[i],TIME_DATE|TIME_MINUTES)," PriceOpenSell[%d] = %G",i,PriceOpenSell[i]);

OpenSellTime配列の日付は表示されず、式の2番目の部分であるPriceOpenSellは表示されません。

また、%Gや%dのようなprintf コマンドも見当たりません。

 

グッドアフターヌーン・オール!(Good afternoon All)

プログラミングのダミーに質問です・・・。

新しいビルドのためにEAをコンパイルしようとしているのですが、コンパイラがいろいろなエラーを出します...。

その中のひとつをご紹介します。

if(oppositedelete){delete( OP_SELLSTOP);delete( OP_SELLLIMIT);}となります。

このコードには、赤で示した2つのエラーがあります:'(' - オブジェクトポインタが 期待される

エラーの対象について少し読んだところ、名前が予約されているため、置き換えなければならないことが理解できました...。

そこで問題は、何に置き換えるかということです。

 
Anton Razmyslov:

グッドアフターヌーン・オール!(Good afternoon All)

プログラミングのダミーに質問です・・・。

新しいビルドのためにEAをコンパイルしようとしているのですが、コンパイラがいろいろなエラーを出します...。

その中のひとつをご紹介します。

if(oppositedelete){delete( OP_SELLSTOP);delete( OP_SELLLIMIT);}となります。

このコードには、赤で示した2つのエラーがあります:'(' - オブジェクトポインタが期待される

エラーの対象について少し読んだところ、名前が予約されているため、置き換えなければならないことが理解できました...。

そこで問題は、何に置き換えるかということです。

思いつくままに。例えば、_delete や delete_1294_765_1912 や Napoleon だけなど。
 

コードの中に次のような行があります。

Print (";OpenSellTime - ",TimeToString(OpenSellTime[N_Sell],TIME_DATE|TIME_MINUTES), ";PriceOpenSell", PriceOpenSell[N_Sell]);

なぜこのようなテキストが出力されるのでしょうか。

OpenSellTime - 2015.12.01 11:15

ここで、"; "と2番目の部分は"PriceOpenSell "ですか?

 
-Aleks-:

コードの中に次のような行があります。

Print (";OpenSellTime - ",TimeToString(OpenSellTime[N_Sell],TIME_DATE|TIME_MINUTES), ";PriceOpenSell", PriceOpenSell[N_Sell]);

なぜこのようなテキストが出力されるのでしょうか。

OpenSellTime - 2015.12.01 11:15

はどこ、2番目の「PriceOpenSell」はどこ?

を削除した";"。- が働いた。

printfに関する 疑問は残りますが...。

 

カウンターポジションのクローズ 要求を正しく送信するにはどうしたらよいですか?

今まで通り、反対側を閉じると、漆塗りになってしまいます))

すでにすべて試したが、まだエラーが出る 2016.04.15 13:17:24 Core 1 2016.03.29 09:00:00 failed close position #64 buy 0.81 EURUSD by position #0 [Invalid request] (要求が無効です)。

どのフィールドを埋め、どのフィールドを埋めないのか?開いたポジションがショートかロングかは関係ないのでは?

//+------------------------------------------------------------------+
//| Закрытие  позиции по типу                                        |
//+------------------------------------------------------------------+
void PositionClose(double lot, int P_type,long id)
  {
Print("Вход в функцию Закрытие  позиции по типу !");
    ZeroMemory(mrequest); ZeroMemory(mresult);            // обнуляем значения mrequest, mresult

   //--- Получить текущее значение котировки в структуру типа MqlTick
   if(!SymbolInfoTick(_Symbol,latest_price))
     {
      Alert("Ошибка получения последних котировок - ошибка:",GetLastError(),"!!");
      return;
     }            
//--- формируем торговый запрос
      mrequest.action = TRADE_ACTION_CLOSE_BY;                                              // закрыть позицию встречной
      mrequest.order = id; 
//      mrequest.action = TRADE_ACTION_DEAL;                                  // немедленное исполнение
//      mrequest.price =  NormalizeDouble(latest_price.bid,_Digits);                      // последняя цена ask
//    mrequest.sl = 0;               // Stop Loss
//     mrequest.tp = 0;               // Take Profit
      mrequest.symbol = _Symbol;                        // символ
      mrequest.volume = lot;                            // количество лотов для торговли
 //     mrequest.magic = MAGIC;                               // Magic Number
      
//     if (P_type == 0) mrequest.type = ORDER_TYPE_SELL; // проверяем тип позиции
//     if (P_type == 1) mrequest.type = ORDER_TYPE_BUY;     
      mrequest.type = ORDER_TYPE_CLOSE_BY;
      mrequest.type_filling = ORDER_FILLING_FOK;        // тип исполнения ордера - все или ничего
      mrequest.deviation=10;                            // проскальзывание от текущей цены
                                        
            if( OrderSend(mrequest,mresult)>0)            // если значение отосланного ордера не ноль, то 
                  {  if(mresult.retcode==10009 || mresult.retcode==10008)
                     Print(" позиция  закрыта !");
                  } else {
                     Print(ResultRetcodeDescription(mresult.retcode));
                     return;
                         }
  }
 

こんにちは、テスターについて質問です。

多通貨のExpert Advisorをテストしており、取引されているすべての通貨ペアのウィンドウをビジュアライザーで確認したいのですが、可能でしょうか?

ビジュアライザーのヘルプに、ビジュアライザーのメインメニューの「表示」セクションにある「チャート」というコマンドについて書かれていますが、これは新しいチャートを開くために使われるようです。しかし、なぜか「Chart」コマンドが全くなく、それに伴い、追加ペアのチャートを開く ことができません。何が問題なのでしょうか?

 
Aleksandr Prishenko:

カウンターポジションのクローズ 要求を正しく送信するにはどうしたらよいですか?

今まで通り、反対側を閉じると、漆塗りになってしまいます))

すでにすべて試したが、まだエラーが出る 2016.04.15 13:17:24 Core 1 2016.03.29 09:00:00 failed close position #64 buy 0.81 EURUSD by position #0 [Invalid request] (要求が無効です)。

どのフィールドを埋め、どのフィールドを埋めないのか?私が理解する限り、ポジションがロングかショートかは関係ありません。

最小限のコードを使用 - 標準ライブラリを使用します。

//+------------------------------------------------------------------+
//|                                                       TestEA.mq5 |
//|                              Copyright © 2016, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"

#include <Trade\Trade.mqh>

CTrade my_trade;
ulong    result_deal_0  =0;
ulong    result_deal_1  =0;
bool     first_start    =false;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   first_start=false;
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(!first_start)
     {
      my_trade.Sell(0.01);
      result_deal_0=my_trade.ResultDeal();
      Sleep(1000);

      my_trade.Buy(0.02);
      result_deal_1=my_trade.ResultDeal();
      Sleep(1000);

      if(result_deal_0!=0 && result_deal_1!=0)
         PositionCloseBy(result_deal_0,result_deal_1);

      first_start=true;
     }
  }
//+------------------------------------------------------------------+
//| Position Close By                                                |
//+------------------------------------------------------------------+
void PositionCloseBy(ulong ticket,ulong ticket_by)
  {
   my_trade.PositionCloseBy(result_deal_0,result_deal_1);
  }
//+------------------------------------------------------------------+

エージェントログです。

ES      0       09:12:21.189    Trade   2016.04.14 00:00:30   instant sell 0.01 EURUSD at 1.12728 (1.12728 / 1.12736 / 1.12728)
IL      0       09:12:21.189    Trades  2016.04.14 00:00:30   deal #2  sell 0.01 EURUSD at 1.12728 done (based on order #2)
 OP      0       09:12:21.189    Trade   2016.04.14 00:00:30   deal performed [#2  sell 0.01 EURUSD at 1.12728]
NF      0       09:12:21.189    Trade   2016.04.14 00:00:30   order performed sell 0.01 at 1.12728 [#2  sell 0.01 EURUSD at 1.12728]
GJ      0       09:12:21.192    TestEA (EURUSD,H1)      2016.04.14 00:00:30   CTrade::OrderSend: instant sell 0.01 EURUSD at 1.12728 [done at 1.12728]
KH      0       09:12:21.192    Trade   2016.04.14 00:00:31   instant buy 0.02 EURUSD at 1.12736 (1.12728 / 1.12736 / 1.12728)
OD      0       09:12:21.192    Trades  2016.04.14 00:00:31   deal #3  buy 0.02 EURUSD at 1.12736 done (based on order #3)
 GI      0       09:12:21.193    Trade   2016.04.14 00:00:31   deal performed [#3  buy 0.02 EURUSD at 1.12736]
LM      0       09:12:21.193    Trade   2016.04.14 00:00:31   order performed buy 0.02 at 1.12736 [#3  buy 0.02 EURUSD at 1.12736]
NS      0       09:12:21.193    TestEA (EURUSD,H1)      2016.04.14 00:00:31   CTrade::OrderSend: instant buy 0.02 EURUSD at 1.12736 [done at 1.12736]
OP      0       09:12:21.193    TestEA (EURUSD,H1)      2016.04.14 00:00:32   Вход в функцию Закрытие  позиции по типу !
GI      0       09:12:21.193    Trade   2016.04.14 00:00:32   close position #2  sell 0.01 EURUSD by position #3  buy 0.02 EURUSD (1.12728 / 1.12736 / 1.12728)
OM      0       09:12:21.193    Trades  2016.04.14 00:00:32   deal #4  buy 0.01 EURUSD at 1.12736 done (based on order #4)
 RK      0       09:12:21.193    Trades  2016.04.14 00:00:32   deal #5  sell 0.01 EURUSD at 1.12728 done (based on order #4)
 EF      0       09:12:21.193    TestEA (EURUSD,H1)      2016.04.14 00:00:32   CTrade::OrderSend: unknown action 10 [done]
EI      0       09:12:21.423    Trade   2016.04.14 23:59:59   position closed due end of test at 1.12663 [#3  buy 0.01 EURUSD 1.12736]
JG      0       09:12:21.423    Trades  2016.04.14 23:59:59   deal #6  sell 0.01 EURUSD at 1.12663 done (based on order #5)
 HN      0       09:12:21.423    Trade   2016.04.14 23:59:59   deal performed [#6  sell 0.01 EURUSD at 1.12663]
IS      0       09:12:21.423    Trade   2016.04.14 23:59:59   order performed sell 0.01 at 1.12663 [#5  sell 0.01 EURUSD at 1.12663]
理由: