どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 827

 
Veterros:

最後の行には、たくさんの括弧があります。空いているものを削除してみるとか。
開閉カッコの数が閉カッコの数と同じであれば、カッコの数は多いに越したことはない。
 
alexeymosc:

こんにちは!関数の外で配列を宣言すると、なぜかエラーが出るんです。

エラー: '[' - 無効なインデックス

変数をインデックスとした2次元非動的配列の宣言方法を教えてください。

staticの代わりにconstを設定してみました。また、[][]も試してみました。それでもエラー(

この質問を一度どこで調べればいいのか、チュートリアルを突いてください。

なぜなら、変数に値を 代入するという一連の作業にもかかわらず、プログラムが実行されるまで、変数は初期化されないままだからです。つまり、int Oninit()を実行するまでは、使用する変数は初期化されていないのです。この行を Oninit() に移動すれば、すべてがうまくいくはずです......。
 

注文を開けない簡単なコードがあります。

ログにはこう書いてある。'1419717': order buy 0.01 EURUSD opening at market sl: 1.13720 tp: 1.13842 failed [Invalid S/L or T/P].

ここ(掲示板)で、「ストップと武井は正常化させるべき!」という情報を得ました。

このフレーズの意味がわからないのですが?

コンパイラはエラーや警告を発生させない。テスト中はすべて正常に動作します。ただ、どこで何を読めばいいのかわからなくなった。

もし説明が長くなるようでしたら、stoplossとtakeprofitを正規化する方法について読めるリンクを送ってください。

ありがとうございました。

double Lots=0.01;
double TakeProfit=100;
double StopLoss=10;
int tk=0;

void start()
{
   if (OrdersTotal()==0)
      {
         tk=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,0,0,0,Green);
         if(tk<0) 
         {
            Print("OrderSend завершилась с ошибкой #",GetLastError());
         }
         else         
         {
            Print("Функция OrderSend успешно выполнена");
         }
      }
}
 
AlexeyVik:
なぜなら、変数に値を代入するという一連の作業にもかかわらず、プログラムが始まるまで変数は初期化されないままだからです。つまり、int Oninit()を実行するまでは、配列の次元として使用する変数は初期化されない。この行を Oninit() に移動すれば、すべてがうまくいくはずです......。

AlexeyVikさん、 ありがとうございます。

それが、私の仕事です。オニニットは考えていませんでしたが、そうなんですね。

 

ヒントをください ))))

チャート上にある程度のグラフィックオブジェクトが 存在する。

新しいバーの形成が終了しました。何か物体に触れたかどうかを判断する最も簡単な方法は何でしょうか?

(すべてのオブジェクトの価格を検索し、最新のバーの価格帯がそれらのいずれかに触れているかどうかを比較したいわけではありません)。

つまり、価格と日付の範囲から、この座標に図形オブジェクトがあるかどうかを判断する方法です。

 
favidu:

注文を開けない簡単なコードがあります。

ログにはこう書いてある。'1419717': order buy 0.01 EURUSD opening at market sl: 1.13720 tp: 1.13842 failed [Invalid S/L or T/P].

ここ(掲示板)で、「ストップと武井は正常化させるべき!」という情報を得ました。

このフレーズの意味がわからないのですが?

コンパイラはエラーや警告を発生させない。テスト中はすべて正常に動作します。ただ、どこで何を読めばいいのかわからなくなった。

もし説明が長くなるようでしたら、stoplossとtakeprofitを正規化する方法について読めるリンクを送ってください。

よろしくお願いします。

参考図書のNormalizeDouble()の掘り下げ。しかし、ブローカーが成行注文を出すときに ストップを露出させることを許可しない場合、ストップをゼロで入力し、2番目のステップで、別途露出させる必要があります。コドベースの中に例があります。


tk=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,NormalizeDouble(Bid-StopLoss*Point,_Digits),NormalizeDouble(Ask+TakeProfit*Point,_Digits),0,0,0,Green);
 
evillive:

NormalizeDouble()でリファレンスを掘り下げます。しかし、ブローカーが成行注文を出すときにストップを置くことを許可しない場合、ストップをゼロで入力し、2段階目で別に置く必要があります。コドベースの中に例があります。


ありがとうございました。
 

みんな、私を正しい方向に導いてくれ...。

例えば、こんな感じです。

#property strict
#property indicator_chart_window
#property indicator_buffers             0

int init() {

        return(0);
}

int start() {
        if (!GlobalVariableCheck(StringConcatenate("ID_", Symbol()))) {
                long id = ChartID();
                Print (id);
                GlobalVariableSet(StringConcatenate("ID_", Symbol()), id);
        }
        return(0);
}

印刷したものが保存されない...。

こんな感じ。

結果

CHANDNT?

 
まあ、投稿したとたんにサーバーが404になっちゃったんですけどね =)
 

一時的にハイビットとロービットを別々に書き込んだ。

double 型のグローバル変数 が long に合わないようです。

ここには「整数が9223372036836854774784より大きいか-9223372036854774784より小さい場合」以外は問題ないはずと書いてありますが。

しかし、チャートID=130659893770676840は、少なくとも9223372036854774784より1桁 少ないことに同意する。


P.S. 私の間違いを説明できる人がいたら、あるいは不具合なのか、よろしくお願いします。これからも、ここをチェックします。