初心者の方からの質問 MQL4 MT4 MetaTrader 4 - ページ 31 1...242526272829303132333435363738...260 新しいコメント Andrei Sokolov 2016.12.11 20:11 #301 あるいは、この条件にこの削除関数を書き込む方法をアドバイスしてください。 Renat Akhtyamov 2016.12.11 20:12 #302 spoiltboy: あるいは、この条件でこの削除関数をどのように書けばいいのか教えてください。削除する注文のチケットを定義する必要があります。チケットがNULLまたは未定義の場合、削除しないでください。 Renat Akhtyamov 2016.12.11 20:23 #303 spoiltboy: これは、異なる注文の場合です。条件によって一方を削除し、条件なしで他方を削除する機能。問題は、私の場合、削除機能は条件なしで正常に動作しますが、条件に入れてしまうと、条件発生時にエラーが発生するのはなぜか、ということです。 コンディションの修正が必要、コンディションが悪いとできない、ログがハードディスクを占領してしまう Andrei Sokolov 2016.12.12 07:44 #304 Renat Akhtyamov:削除するticketDとticketUPを先に定義しておく必要があります。チケットがnullまたはundefinedの場合、削除は行われませんつまり、1枚はticketD、もう1枚 はticketUPと 定義されて いるのです。 それとも、私が何か勘違いしているのでしょうか? Renat Akhtyamov 2016.12.12 07:51 #305 spoiltboy:つまり、1枚はticketD、もう1枚 はticketUPと 定義されて いるのです。 それとも、私が何か勘違いしているのでしょうか?チケットUPが既に削除 されている場合、どのように定義すればよいのでしょ うか?削除してしまった、ticketUPを必要な状態に更新する、その際、ticketUPを削除する条件が機能しない、この条件もコードに追加する必要があります。 Andrei Sokolov 2016.12.12 08:43 #306 Renat Akhtyamov:チケットUPが既に削除 されている場合、どのように定義すればよいのでしょ うか?削除してしまった、ticketUPを必要な状態に更新する、その際、チケットを削除する条件が機能しない、この条件もコードに追加する必要があります。つまり、チケットD、別のチケットUPの 注文が先に(不在条件に従って)作成され、その後、それらはすでに削除されているのです。if(BuyLimitCount()==0&& BuyCount()==0){slB=NormalizeDouble(minpr1-pointsl*Point,5);tpB=NormalizeDouble(minpr1+pointtp*Point,5);int ticketUP=OrderSend(Symbol(). B),OP_BUYLIMIT, lotB, minpr1,3, slB, tpB,"", MagicB,0, Red);if(ticketUP==-1)Print("ERROR OP_BUY"); elsePrint("OP_BUY OK");} if(SellLimitCount()==0&& SellCount() ==0){slS=NormalizeDouble(maxpr1+pointsl*Point,5);tpS=NormalizeDouble(maxpr1-pointtp*Point,5);int ticketD=OrderSend(Symbol(),OP_SELLLIMIT, lotS, maxpr1,3, slS, tpS,"", MagicS,0, Blue);if(ticketD==-1)Print("ERROR OP_SELL"); elsePrint("OP_SELL OK");}if(x!=maxpr1){x=maxpr1;OrderDelete(ticketD);}.OrderDelete(ticketUP)。もし私が混乱していたら、何? Questions from Beginners MQL4 MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 Any questions from newcomers Renat Akhtyamov 2016.12.12 08:47 #307 spoiltboy:そのため、チケットD、別のチケットUPを 持つ注文がまず(不在条件に従って)作成され、その後削除される。if(BuyLimitCount()==0&& BuyCount()==0){。slB=NormalizeDouble(minpr1-pointsl*Point,5)とする。tpB=NormalizeDouble(minpr1+pointsl*Point,5)とする。int ticketUP=OrderSend(Symbol(),OP_BUYLIMIT, lotB, minpr1,3, slB, tpB,"", MagicB,0, Red) です。if(ticketUP==-1)Print("ERROR OP_BUY"); elsePrint("OP_BUY OK");}.if(SellLimitCount()==0&& SellCount() ==0){。slS=NormalizeDouble(maxpr1+pointsl*Point,5) となります。tpS=NormalizeDouble(maxpr1+pointsl*Point,5)。int ticketD=OrderSend(Symbol(),OP_SELLLIMIT, lotS, maxpr1,3, slS, tpS,"", MagicS,0, Blue) です。if(ticketD==-1)Print("ERROR OP_SELL"); elsePrint("OP_SELL OK");}.if(x!=maxpr1){x=maxpr1;OrderDelete(ticketD);}.OrderDelete(ticketUP)。何を混乱させたらいいのか?ここでも条件なしの命令になっていますね。OrderDelete(ticketUP)。なぜ、コードを変更しなかったのですか?せめて「考える」時間をとって、整理する+自分が書いたもの、アドバイスされたものを読んでみる。ところで、ここにはフリーランスが いるのですが、もしや...。 Andrei Sokolov 2016.12.12 09:08 #308 Renat Akhtyamov:つまり、またしても条件なしの命令です。OrderDelete(ticketUP)。なぜ、コードを変更しなかったのですか?少なくとも「考える」時間をとって、把握する+今まで書かれたこと、アドバイスされたことを読み込む。ちなみに、うまくいかなければここでフリーランスも あり......。条件なし-だと除去が発生するからで、条件あり-だとダメなんです。だから、できないことを示すために書いた。このように書くとよいでしょう。OrderDelete(ticketD)です。OrderDelete(ticketUP)。そして、1ティックごとに(不在条件に従って)すでに作成された注文を削除する。と条件を付けて書けばif (x!=maxpr1){x=maxpr1; OrderDelete(ticketD);}.if (z!=minpr1){z=minpr1; OrderDelete(ticketUP);}.そして、その条件が発生したときに、削除エラーを書き込むのです。この条件で指定された注文を削除するには、どのように書けばよいのでしょうか。 Renat Akhtyamov 2016.12.12 09:11 #309 spoiltboy:条件なしだから......削除はそうなるけど、条件ありだとそうならないから。できないことを指摘するために、このように書きました。このように書くとOrderDelete(ticketD)です。OrderDelete(ticketUP)。そして、1ティックごとに(不在条件に従って)すでに作成された注文を削除する。と条件を付けて書けばif (x!=maxpr1){x=maxpr1; OrderDelete(ticketD);}.if (z!=minpr1){z=minpr1; OrderDelete(ticketUP);}.そして、その条件が発生したときに、削除エラーを書き込むのです。指定した注文を削除する際の条件は、どのように書けばよいのでしょうか?注文を削除するための条件を削除することはできませんticketUPとticketDは、チケットを開くときに、グローバル変数 に書き込む必要がありますGlobalVariableSet("ticketUP",ticketUP)。GlobalVariableSet("ticketD",ticketD)。をクリックし、保留中のチケットを削除する前にそこから読み取ります。ticketUP=GlobalVariableGet("ticketUP")です。ticketD=GlobalVariableGet("ticketD")です。ちなみに、そこ(グローバル)を見てみると、何があるか、どんなチケットが書かれているかこの後、すべてがうまくいくと思います。 extream 2016.12.12 10:59 #310 こんにちは!誰が問題を解決するために助けることができる、私は動的な配列の ためのバイパーを書いている、以下は、クラスのコードです。class CArray{ private: template <typename T> T _array[]; int _index; int _err; int _err_sys;public: CArray(){_index = -1; _err = 0; _err_sys = 0;} ~CArray(){} // template <typename T> T operator[](int i){ if((_index == -1) || (i < 0) || (i > _index)) {_err_sys = -1;} return (_array[i]); } T at(int i){ if((_index == -1) || (i < 0) || (i > _index)) {_err_sys = -1;} return (_array[i]); } void push_back(T value){ _array[++_index] = value; }};の部分は、プログラムコードの一部です。#property copyright "Copyright 2016, MetaQuotes Software Corp."#property link "https://www.mql5.com"#property version "1.1"#property strict#include "Array.mqh"//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+ CArray *array;int OnInit() { int b = 1; array = new CArray(); array.push_back(b); int a = array.at(0); //--- return(INIT_SUCCEEDED); }...Expert Advisor を実際のデータで実行しようとすると、次のエラーが発生します: internal error #-1005何がいけなかったのか?ありがとうございました。 Questions from Beginners MQL4 初心者の方からの質問 MQL5 MT5 MetaTrader help me please [解決済み]. 1...242526272829303132333435363738...260 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
あるいは、この条件でこの削除関数をどのように書けばいいのか教えてください。
削除する注文のチケットを定義する必要があります。
チケットがNULLまたは未定義の場合、削除しないでください。
これは、異なる注文の場合です。条件によって一方を削除し、条件なしで他方を削除する機能。
問題は、私の場合、削除機能は条件なしで正常に動作しますが、条件に入れてしまうと、条件発生時にエラーが発生するのはなぜか、ということです。
削除するticketDとticketUPを先に定義しておく必要があります。
チケットがnullまたはundefinedの場合、削除は行われません
つまり、1枚はticketD、もう1枚 はticketUPと 定義されて いるのです。
それとも、私が何か勘違いしているのでしょうか?
つまり、1枚はticketD、もう1枚 はticketUPと 定義されて いるのです。
それとも、私が何か勘違いしているのでしょうか?
チケットUPが既に削除 されている場合、どのように定義すればよいのでしょ うか?
削除してしまった、ticketUPを必要な状態に更新する、その際、ticketUPを削除する条件が機能しない、この条件もコードに追加する必要があります。
チケットUPが既に削除 されている場合、どのように定義すればよいのでしょ うか?
削除してしまった、ticketUPを必要な状態に更新する、その際、チケットを削除する条件が機能しない、この条件もコードに追加する必要があります。
つまり、チケットD、別のチケットUPの 注文が先に(不在条件に従って)作成され、その後、それらはすでに削除されているのです。
if(BuyLimitCount()==0&& BuyCount()==0){slB=NormalizeDouble(minpr1-pointsl*Point,5);
tpB=NormalizeDouble(minpr1+pointtp*Point,5);
int ticketUP=OrderSend(Symbol(). B),OP_BUYLIMIT, lotB, minpr1,3, slB, tpB,"", MagicB,0, Red);
if(ticketUP==-1)Print("ERROR OP_BUY"); elsePrint("OP_BUY OK");}
if(SellLimitCount()==0&& SellCount() ==0){
slS=NormalizeDouble(maxpr1+pointsl*Point,5);
tpS=NormalizeDouble(maxpr1-pointtp*Point,5);
int ticketD=OrderSend(Symbol(),OP_SELLLIMIT, lotS, maxpr1,3, slS, tpS,"", MagicS,0, Blue);
if(ticketD==-1)Print("ERROR OP_SELL"); elsePrint("OP_SELL OK");}
if(x!=maxpr1){x=maxpr1;OrderDelete(ticketD);}.
OrderDelete(ticketUP)。
もし私が混乱していたら、何?
そのため、チケットD、別のチケットUPを 持つ注文がまず(不在条件に従って)作成され、その後削除される。
if(BuyLimitCount()==0&& BuyCount()==0){。slB=NormalizeDouble(minpr1-pointsl*Point,5)とする。
tpB=NormalizeDouble(minpr1+pointsl*Point,5)とする。
int ticketUP=OrderSend(Symbol(),OP_BUYLIMIT, lotB, minpr1,3, slB, tpB,"", MagicB,0, Red) です。
if(ticketUP==-1)Print("ERROR OP_BUY"); elsePrint("OP_BUY OK");}.
if(SellLimitCount()==0&& SellCount() ==0){。
slS=NormalizeDouble(maxpr1+pointsl*Point,5) となります。
tpS=NormalizeDouble(maxpr1+pointsl*Point,5)。
int ticketD=OrderSend(Symbol(),OP_SELLLIMIT, lotS, maxpr1,3, slS, tpS,"", MagicS,0, Blue) です。
if(ticketD==-1)Print("ERROR OP_SELL"); elsePrint("OP_SELL OK");}.
if(x!=maxpr1){x=maxpr1;OrderDelete(ticketD);}.
OrderDelete(ticketUP)。
何を混乱させたらいいのか?
ここでも条件なしの命令になっていますね。
OrderDelete(ticketUP)。
なぜ、コードを変更しなかったのですか?
せめて「考える」時間をとって、整理する+自分が書いたもの、アドバイスされたものを読んでみる。
ところで、ここにはフリーランスが いるのですが、もしや...。
つまり、またしても条件なしの命令です。
OrderDelete(ticketUP)。
なぜ、コードを変更しなかったのですか?
少なくとも「考える」時間をとって、把握する+今まで書かれたこと、アドバイスされたことを読み込む。
ちなみに、うまくいかなければここでフリーランスも あり......。
条件なし-だと除去が発生するからで、条件あり-だとダメなんです。だから、できないことを示すために書いた。このように書くとよいでしょう。
OrderDelete(ticketD)です。
OrderDelete(ticketUP)。
そして、1ティックごとに(不在条件に従って)すでに作成された注文を削除する。と条件を付けて書けば
if (x!=maxpr1){x=maxpr1; OrderDelete(ticketD);}.
if (z!=minpr1){z=minpr1; OrderDelete(ticketUP);}.
そして、その条件が発生したときに、削除エラーを書き込むのです。
この条件で指定された注文を削除するには、どのように書けばよいのでしょうか。
条件なしだから......削除はそうなるけど、条件ありだとそうならないから。できないことを指摘するために、このように書きました。このように書くと
OrderDelete(ticketD)です。
OrderDelete(ticketUP)。
そして、1ティックごとに(不在条件に従って)すでに作成された注文を削除する。と条件を付けて書けば
if (x!=maxpr1){x=maxpr1; OrderDelete(ticketD);}.
if (z!=minpr1){z=minpr1; OrderDelete(ticketUP);}.
そして、その条件が発生したときに、削除エラーを書き込むのです。
指定した注文を削除する際の条件は、どのように書けばよいのでしょうか?
注文を削除するための条件を削除することはできません
ticketUPとticketDは、チケットを開くときに、グローバル変数 に書き込む必要があります
GlobalVariableSet("ticketUP",ticketUP)。
GlobalVariableSet("ticketD",ticketD)。
をクリックし、保留中のチケットを削除する前にそこから読み取ります。
ticketUP=GlobalVariableGet("ticketUP")です。
ticketD=GlobalVariableGet("ticketD")です。
ちなみに、そこ(グローバル)を見てみると、何があるか、どんなチケットが書かれているか
この後、すべてがうまくいくと思います。
{
private:
template <typename T>
T _array[];
int _index;
int _err;
int _err_sys;
public:
CArray(){_index = -1; _err = 0; _err_sys = 0;}
~CArray(){}
// template <typename T>
T operator[](int i){
if((_index == -1) || (i < 0) || (i > _index)) {_err_sys = -1;}
return (_array[i]);
}
T at(int i){
if((_index == -1) || (i < 0) || (i > _index)) {_err_sys = -1;}
return (_array[i]);
}
void push_back(T value){
_array[++_index] = value;
}
};
の部分は、プログラムコードの一部です。
#property link "https://www.mql5.com"
#property version "1.1"
#property strict
#include "Array.mqh"
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
CArray *array;
int OnInit()
{
int b = 1;
array = new CArray();
array.push_back(b);
int a = array.at(0);
//---
return(INIT_SUCCEEDED);
}
...
Expert Advisor を実際のデータで実行しようとすると、次のエラーが発生します: internal error #-1005
何がいけなかったのか?ありがとうございました。