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

 

こんにちは

という理解不足に直面しました。標準ライブラリのSearch()」。

私は標準クラス -CiTime() - を使用しています。このクラスは、バーのオープニング時系列にアクセスするためのクラスです。

int OnInit()
  {
//..
 TimeFrac=new CiTime();
   if(CheckPointer(TimeFrac)==POINTER_INVALID || !TimeFrac.Create(symbol_Name,TimeFr_Frac_D1))
      return INIT_FAILED;
   TimeFrac.Refresh();  
   TimeFrac.Sort();
//..

必要なDate(classは同じだがPeriodは異なる)を探そうとしたとき

 int k = TimeFrac.Search(  Time.GetData(i)    );

エラーを発生させる。

'GetData' -パラメータの変換は許可されて いません。

交換を試みた

Time.GetData(i)

まで

datetime Time_GetData  =  Time.GetData(i);

うまくいかない...

ヘルプを参考にさせていただきました。そこに書いてあるのは

int  Search( 
   CObject*  element      // образец 
   ) const

そして、野生のアプリケーションの例。

標準クラスの「日付」を、同じクラスの既知の「日付」で検索することはできないことが判明!!?

クラスエレメントのみ。

CObject

このクラスでは、Dateを検索するための実用的な例を見つけることができませんでした。

誰に相談すればいいのか?

ありがとうございます。

 
こんにちは、皆さん、何が問題か教えてください、なぜかうまくいきません
double Minus_profit(){
time=TimeCurrent();
 for (int i=0; i<OrdersHistoryTotal(); i++){
      if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)){
       if (OrderSymbol() == Symbol() && OrderMagicNumber()==Magic){
        if (OrderType() == OP_BUY || OrderType() ==OP_SELL){
         if (OrderCloseTime()>=time){
          if (OrderProfit()+OrderSwap()+OrderCommission()<=0){
              time=OrderCloseTime();
              profit+=OrderProfit();swap+=OrderSwap(); ;comis+=OrderCommission();
              result=profit+swap+comis;   
   }}}}}}return(result);
}
 
Alexander Avksentyev #:
こんにちは、皆さん、何が問題か教えてください、なぜかうまくいきません
double Minus_profit(){
time=TimeCurrent();   // это текущее время
 for (int i=0; i<OrdersHistoryTotal(); i++){
      if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)){
       if (OrderSymbol() == Symbol() && OrderMagicNumber()==Magic){
        if (OrderType() == OP_BUY || OrderType() ==OP_SELL){
         if (OrderCloseTime()>=time){                  // условие не выполнимо, что бы время закрытия ордера в истории
          if (OrderProfit()+OrderSwap()+OrderCommission()<=0){     // было больше/позже чем текущее
              time=OrderCloseTime();
              profit+=OrderProfit();swap+=OrderSwap(); ;comis+=OrderCommission();
              result=profit+swap+comis;   
   }}}}}}return(result);
}
 

質問です。4k用。

doubleMarketInfo()

)

MODE_LOTSIZE

15

商品の基準通貨での契約サイズ

これは、1ロットの値ですか? そして、レバレッジで割ると、商品の最初の通貨でのレバレッジを含むロットの値です。

モードマージン必須

32

1ロットの買い付けを行うために必要な資金量

は5のラストのアナログがあるのでしょうか、あるのなら見つけられませんでした。

マージンフリーファンドは明確です。これを1ロットの値で割ると、レバレッジなしで何ロット開設できるか、またレバレッジをかけると何ロット開設できるかがわかる。正しいのか、そうでないのか。

ザイ。5の場合はこれでいいのでしょうか?

double   Free   =AccountInfoDouble(ACCOUNT_MARGIN_FREE);                 // Свободн средства
double   One_Lot=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_CONTRACT_SIZE);// Стоимость 1 лота без плеча
double   Step   =SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);       // Шаг изменен размера
long     Laverage=AccountInfoInteger(ACCOUNT_LEVERAGE); // Плечо
double   One_Lot_Lav=ND((One_Lot/Laverage)*Ask);      // Стоимость лота с плечом для бай
Lts=MathFloor(Free*Prots/One_Lot_Lav/Step)*Step;// Для открытия
 
Dai Tanaka #:

ちなみにMQL4ではすぐに画像は作成され期待したとおりに動作します。

私のMT5でテストしましたが、MQL5でも特に問題なく動作します。

ChartScreenShot は処理が成功すれば true を返します。

上のプログラムではそれを確認せず次の処理に進んでいます。

ループを使って true を返すまで待機させるようにしたらどうですか?

 

私が試したのはスクリプトです。

インジケーターとして実行するとファイルが書き込まれるタイミングは次のデータが読み込まれたとき、

つまりOnCalculateの2回目の実行の時になります。

 

それは知りません。

そういう仕様なのだからそれに合わせればいいのと違いますか?わずか数秒から数十秒程度のことですから。

他にやるとすれば、コマンドラインで使えるキャプチャソフトを探して ShellExecuteW で実行させるというような方法もあります。

 

I would like to write an EA review comment for this MQL5 site.

I don't know how to describe it, so I would like you to teach me.


Since I purchased this EA product, I would like to write a review comment on the above site and mark it with a star.

I don't have a button such as "write a comment" on my screen, and I have no idea what to do.


thank you.

理由: