新参者の冒険 - ページ 7

 
niko:

CBへ。


やあ、ハイフライヤー!Timのタスクでできることはすべてやったので、あなたのコードをもっと詳しく見始めることにしました。


私はあなたのコードを調べ、その中のエラーを理解し修正しようとしました。なんとか、文字列fnGenerateSignal()の'unbalanced parenthesis'だけはエラーを減らすことができました。この場合、なぜunbalanceと書いてあるのかわかりません。


いつものように、あなたのコードを使った私の進歩について、あなたの考えをお聞かせください。基本的なことでさえ、まだ理解していないことがたくさんあることを心に留めておいてください。

注釈を参照してください。

以下のことに気がつきました。

- パラメータとして渡される変数を期待する関数を 宣言しておきながら、実際には関数の呼び出し時に渡していない - だから、とりあえず変数を一番上のブロックに移動して、すべての関数で利用できるようにするように頼んだ - 今はできるだけシンプルにしておこう

- 関数の名前も変数として宣言しなければならないと考えているようですね。ここでは、関数の使い方と変数の受け渡しについて説明します。


宣言するには

int abcdef(int x, string s) //abcdefという名前の関数が整数と文字列を入力として受け取り、出力として整数(この場合は0か9)を返すことを意味します。

{

この関数は x と s に対して何かをします。

if (ある条件)

return(9)を返します。

さもなくば

return(0)を返します。

}


と呼び出すことです。

...

myResponse = abcdef(myInteger, myString);

if (myResponse == 9)

{

blah

 

CBです。

ありがとうございます。私が理解できなかったことが、あなたのおかげでとてもよくわかりました。今、私は正しい線上にいると思います。

CBさん、質問1です。

ブールfnOrderDuplicate()

{

iDuplicateOrders=0 // CBはiDuplicateOrdersをintまたはdoubleとして宣言すべきではありませんか?

iOrders = OrdersTotal()-1 //あなたの助けで今理解した、これはOrdersTotal関数を 呼び出す。しかし、再びiOrdersは変数として宣言されるべきではありませんか?

CB,質問2:

int fnTrade() //なぜこれは "int fnTrade(string sSignal) "ではないのでしょうか。?

{ if(sSignal=="OP_BUY")

...

CB,quesytion3です。

あなたは、コードの最後にreturn(0)と}を削除するように私に尋ねた。しかし、これはStart()が典型的な'return(0)と括弧で閉じないことを意味します。私がチェックしたところ、すべてのプレボイスブラケットは、我々が設計した特定の関数の開閉に特有のものだからです。?

 
niko:

CBです。

ありがとうございます。私が理解できなかったことが、あなたのおかげでとてもよくわかりました。今、私は正しい線上にいると思います。

CBさん、質問1です。

ブールfnOrderDuplicate()

{

iDuplicateOrders=0 // CBはiDuplicateOrdersをintまたはdoubleとして宣言すべきではありませんか?

iOrders = OrdersTotal()-1 //あなたの助けで今理解した、これはOrdersTotal関数を呼び出す。しかし、再びiOrdersは変数として宣言されるべきではありませんか?

CB,質問2:

int fnTrade() //なぜこれは "int fnTrade(string sSignal) "ではないのでしょうか。?

{ if(sSignal=="OP_BUY")

...

CB,quesytion3です。

あなたは、コードの最後にreturn(0)と}を削除するように私に尋ねた。しかし、これはStart()が典型的な'return(0)と括弧で閉じないことを意味します。私がチェックしたところ、すべてのプレボイスブラケットは、我々が設計した特定の関数の開閉に特有のものだからです。?

Q1: これらの変数は両方とも定義されています。EXTERNを定義したセクションに移動するよう私が提案した変数を見てください。これにより、自動的にすべての関数で 使用できるようになります。

Q2: 変数sSignalは、すべての関数の外部で宣言されていれば、関数呼び出しの際に明示的に渡す必要がなく、すべての関数で利用可能です。

Q3: ああ、誤解が解けました。なぜreturn文と中括弧をつけたのか不思議に思っていました。fnTrade()ステートメントについては、私のコメントで対処しています。私はそこにreturnコールと閉じ括弧を追加するようお願いしたことにお気づきでしょう。その理由は、start()関数のコードブロックの中ですべての関数を(間違って)宣言していたからです。


CB

 
niko wrote>>

やあ、Tim。

私は、あなたが私に尋ねたコードのビットを行いました。私の質問に詳しく答えてくれて、またコード中にたくさんのコメントを書いてくれて、私の頭を助けてくれてありがとう。私は、物事がどのように組み合わされ、どのように配列を適切に使用し、特定の関数を呼び出すか(そしてグローバル変数とローカル変数の役割)を理解し始めています。

私たちのコードの最新版を添付します。

一つ質問ですが、EntryRules関数に(フラグを含む)すべてを含ませて買い/ショートの条件を与えず、後でフラグを付けて呼び出してエントリーを決定するのは何か理由があるのでしょうか?

ニック


コードを少し整理して、皆さんの質問にお答えできればと思います。EntryFunctionはこれで完成です。あとは、コードで示したように、スタート(メイン)関数から呼び出して、必要なパラメータを渡すだけです。ほんの数分の作業で、コンパイルとテストができるようになると思います。いくつかの小さなバグに悩まされることになると思いますが、大きな問題がないことを祈ります。


コンパイルが終わったら、テスターでEAを動かしてみて、ログファイルを見て、この段階で期待通りの動きをしているかどうか確認してください。各通貨ペアの買いシグナルと売りシグナルを見ることができるはずです。


この時点で、あなたのコードは約75%完成していると言えるでしょう。


この次のステップは、指定された通貨ペアと取引方向の未決済注文をチェックする別の関数を作成することです。


MT4のドキュメントで、Trading functionsを参照することをお勧めします。OrdersTotal(), OrderSelect(), Order Symbol() & OrderType()がこのタスクの候補になりそうです。


EntryRules関数にフラグを含むすべてを含めるというご質問ですが、そうしない理由は見当たりません。EntryRules関数を改造してみてはいかがでしょうか。

あなたが既に行ったことをコンパイルし、実行し、テストした後に、これを行うことをお勧めします。


よろしくお願いします。

ティム

ファイル:
 

CB: ありがとうございます。私はなぜか、すべてがスタート関数の中になければならないと思っていました。

質問です。絵馬はスタート関数の中で宣言してはいけないのでしょうか?

 

Tim: 改めてありがとうございました。今晩仕事を終えたら、さっそく私のほうで話を進めてみます。

 
niko:

CB: ありがとうございます。私はなぜか、すべてがスタート関数の中になければならないと思っていました。

質問です。絵馬はスタート関数の中で宣言してはいけないのでしょうか?

いいえ、関数 内で変数を宣言すると、その関数の中でのみ使用できます。もし、すべての関数の外側で宣言すれば、その変数はすべての関数で使用できます。したがって、ema変数を先頭で宣言し、スタート関数の中で計算を行うことができます。


CB

 
cloudbreaker wrote>>

関数内で変数を宣言した場合、その関数の中でのみ使用可能です。もし、すべての関数の外側で宣言すれば、その変数はすべての関数で使用できます。したがって、ema変数を先頭で宣言し、その上でstart関数の中で計算を行うことができます。

CB

CBさん、ありがとうございます!今わかりました。

 

やあ、ティム。


今、トルコから戻ってきました。クサダシでは素晴らしい時間を過ごすことができ、本当に帰りたくなかったよ。トルコ人はイギリス人よりもずっとフレンドリーです。初めて行った場所なのに、まるで自分の家のようにくつろげました。


この5時間ほどで、私たちが設計しているコードをアップグレードしました。添付します。

主な修正点は

1.注文数関数を作り、start関数の中で呼び出すようにしました。私は、私がまだ得ていないビットがあるので、これがエラーでいっぱいになることを期待しています(例えば、それが通貨ペア ごとにのみ動作するように[c]ループに従うことを確認する方法など)。

2.2. currencySymbolとcurrencySymの名前を途中で変えたので、コードを修正しようとしました。しかし、これは混乱した可能性があります。

3.3. EntryRules関数をstart関数の中で呼び出すようにしました。


このまま、大小の間違いを訂正していただければ、本当にありがたいです。


いつものように熱心にあなたの改正を待っています

ファイル:
 

こんにちは、CBです。


ここ数日連絡がないので、Timは今休暇中だと思います。私は今ストラテジーを手動でトレードしているので、早起きしなければならないのです)。ご要望の通り、全てのコードを修正しましたが、なぜかまだエラーが返ってきます(今回は"=="に関係するもので、非常に不思議です)。


もうひとつは、start関数が閉じられて いないことに気づきました。だから、私は開始()内の最初の関数の後に "}"を追加しました、我々はそれをしない場合、コードはその後の関数文字列fnGenerateSignal()でエラーを生成します(そのための関数定義は予想外であると言っている)。


いつもありがとうございます。コメント/修正をお待ちしています。

ニック

ファイル:
理由: