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

 
LSM:
質問を編集し、コードを追加しました。ループが起きているのです。ループで発生した時に何が出るかは不明です。
そこでは、すべてがクリアになる。
例えば、このサイクルでは、インジケータは15をカウントしています。5分ロウソク
で、15+1 から値を取りました。16日15分足のローソク足です。


 
LSM:

必要な人がいるかもしれないので、自分の質問に答えますね)

そうなんです。
 

こんにちは。

アイデアはあるのですが、どちらからアプローチすればいいのか、まだ「わからない」ので、アドバイスをお願いします。

あるインジケータがあるのですが、サーバ上のCSVファイルからある口座番号の リストに対してアクセスを開きました。

リストから特定のアカウントにメッセージを書き込んで、その特定のユーザーのチャートに表示することは技術的に可能でしょうか?

例えば、CSVで口座番号を指定して、"Hello... "のようなテキストを書き、ユーザーはそれをチャートで見るのでしょうか?もし可能であれば、どの方向に「掘る」のか。ありがとうございます...

 

こんにちは、いくつかのmql4構文を理解するのを助けてもらえますか?例えば、オープンオーダーから150pipsのストップと50のテイクプロフィットでロングポジションを取り、価格がtpに達したらストップ150とテイクプロフィット50で新しい買いをオープンし、ストップロスで 失敗したらロングポジションと同じリスク/利益率で売りを実行するトレンドフォローのEAを書く アイデアがある。このようなロジックでコードを書いてみましたが、テスト中にExpert Advisorが取引を行わないため、失敗しました。

double b, difference;
int ticket;

int OnInit()
{
   b=Bid;
   return(b);
}

void OnTick()
{
   difference = Bid-b;
   if(OrdersTotal()==0)
   {
      if(difference==150*Point)
      {
         ticket=OrderSend(Symbol(),OP_BUY,1,Ask,0,Ask-150*Point,Ask+50*Point,0);
         if(difference==0){b=Bid+150*Point;}
            if(ticket<0)
            {
               Print("lose");
            }
      }
      if(difference==200*Point){b=Bid-150*Point;}

      if(difference==-150*Point)
      {
         ticket=OrderSend(Symbol(),OP_SELL,1,Bid,0,Bid+150*Point,Ask-50*Point,0);
         if(difference==0){b=Bid-150*Point;}
            if(ticket<0)
            {
               Print("lose");
            }
      }
      if(difference==-200*Point){b=Bid+150*Point;}
   }
}
Как самому создать советника или индикатор - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Как самому создать советника или индикатор - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Для разработки торговых систем в платформу встроен собственный язык программирования MetaQuotes Language 5 ( MQL5 ), среда разработки MetaEditor и...
 
MosheDayan:

こんにちは。

アイデアはあるのですが、どちらからアプローチすればいいのか、まだ「わからない」ので、アドバイスをお願いします。

あるインジケータがあるのですが、サーバ上のCSVファイルからある口座番号の リストに対してアクセスを開きました。

リストから特定のアカウントにメッセージを書き込んで、その特定のユーザーのチャートに表示することは技術的に可能でしょうか?

例えば、CSVで口座番号を指定して、"Hello... "のようなテキストを書き、ユーザーはそれをチャートで見るのでしょうか?もし可能であれば、どの方向に「掘る」のか。ありがとうございます...

サーバーに口座番号のポストリクエストを送信する

IntegerToString(AccountInfoInteger(ACCOUNT_LOGIN)

サーバー側では、受信した番号をCSVファイルの全行と照合し、一致するものがあれば、その行から端末に応答を送る。あとは、サーバーからのレスポンスをターミナルで読み込んで、チャートに表示するだけです。

一般に、このようなことはファイルよりも MySQL で実装する方が簡単です。

 
Maxim235v34:
そうそう、難しくなければ、この掲示板で行間を縮める方法を提案してください。

まずテキストファイル(メモ帳)に書き込んでから、クリップボードでコピーします。このように取得します。

double b, difference;
int ticket;

int OnInit()
{
   b=Bid;
   return(b);
}

void OnTick()
{
   difference = Bid-b;
   if(OrdersTotal()==0)
   {
      if(difference==150*Point)
      {
         ticket=OrderSend(Symbol(),OP_BUY,1,Ask,0,Ask-150*Point,Ask+50*Point,0);
         if(difference==0){b=Bid+150*Point;}
            if(ticket<0)
            {
               Print("lose");
            }
      }
      if(difference==200*Point){b=Bid-150*Point;}

      if(difference==-150*Point)
      {
         ticket=OrderSend(Symbol(),OP_SELL,1,Bid,0,Bid+150*Point,Ask-50*Point,0);
         if(difference==0){b=Bid-150*Point;}
            if(ticket<0)
            {
               Print("lose");
            }
      }
      if(difference==-200*Point){b=Bid+150*Point;}
   }
}
OnInit()関数にカーソルを合わせてF1キーを押して ください。int という単語が前にあるので、この関数は整数値を返します。 あなたはdouble 型の 値を返そうとしているのです。 OnInit()関数の 結果は端末のランタイムサブシステムで解析されるため、この値はほとんど必要ありません。
 
LRA:

まずテキストファイル(メモ帳)に書き込んでから、クリップボードを通してコピーします。それは次のようなものです。

ありがとうございます。知っておいて損はない。

OnInit()関数にカーソルを合わせてF1キーを押して ください。intという単語が前にあるので、この関数は整数値を返します。 あなたはdouble型の 値を返そうとしているのです。 OnInit()の 結果は端末のランタイムサブシステムで解析されるため、この値はほとんど必要ありません。
では、どのようなタイプのイベントハンドラでこれを実装すればよいのでしょうか - に。
プログラム動作の開始時に価格値を固定し、それに基づいて将来の計算を行うか?
int OnInitにあったものを全て削除し、一番最初のvoid OnTickに変数varStartを追加して以下のコードを入れてみました。
if(varStart==0)
{
b=入札
varStart=1です。
}
結果は変わりません。
 

ポインターを持つ関数があります。


  TickReturn *returntick(int period, int timeposition)
   {
      TickReturn *returntick = new TickReturn();
      MqlRates rates[];
      MqlTick last_tick;
      
      if(SymbolInfoTick(symbol,last_tick)){}
      else Print("SymbolInfoTick() failed, error = ",GetLastError());
      
      //int timeposition=0;
      ArraySetAsSeries(rates,true);
      ArrayResize(rates,1);
      int copied=CopyRates(symbol,period,timeposition,1,rates);
      
      returntick.curtime = rates[0].time;
      returntick.open = rates[0].open;
      returntick.close = rates[0].close;
      returntick.high = rates[0].high;
      returntick.low = rates[0].low;
      returntick.priceask = last_tick.ask;
      returntick.pricebid = last_tick.bid;
      
      return(returntick);

   } 

今も別の機能で呼び出しています。


string timeis = returntick(period, 1).curtime;

裏の記憶を消すにはどうしたらいいですか?

delete(TickReturn);で、operand exceptedというエラーが出ます。

 
hamsteruser:

ポインターを持つ関数があります。


今でも別の機能で呼び出しています。


裏の記憶を消すにはどうしたらいいですか?

delete(TickReturn);のところで、operand exceptedというエラーが出ます。


あなたのコードを正しく読めば、TickReturnはクラスです。このクラスの型の変数へのポインタを作成したことになります。ということですか?ポインターを破棄して、ポインターが存在し、ダイナミックであることを確認する必要があります。

 
Алексей Барбашин:

あなたのコードを正しく読めば、TickReturnはクラスです。そのクラスの型の変数へのポインタを作ったのに、破壊してしまう...。...授業そのもの?ポインターを破棄して、ポインターが存在し、かつ動的であることを確認する必要があります。


また、*returntickも破壊不可能です。取引端末の 出力に戸惑うばかりです。メモリがクリアされないと言われる。