久しぶりの更新です。
今日は、実際に売買するプログラムを書いてみたいと思います。
その前に、今回のテーマから・・・
1 EAは、値動きがある度に作動する
2 勝てるEAは簡単には作れないが、口座を破壊するEAは一行で作れる
3 EAを作ったら、最初はデモ口座で動かす。リアル口座ですぐに動かすの は自殺行為
今回、お伝えしたいのは以上の3つです。
前回は、ただ単に口座履歴に「初めの一歩」と表示されるプログラムを紹介しました。
ソースは以下の通り
------------------------------------------------------------------------------------------
int start()
{
Print("初めの一歩");
return(0);
}
------------------------------------------------------------------------------------------
今回は、実際に注文をするプログラムを組んでみましょう。
※くどいようですが、動作確認は必ずデモ口座でお願いします。
今回も非常に簡単なロジックです。
「とりあえず、「買い」注文をする。」
これをプログラムにしてみましょう
発注するには、OrderSend関数というものを使います。
------------------------------------------------------------------------------------------
int start()
{
OrderSend(Symbol(),OP_BUY,0.1,Bid,5.0,0,0,NULL,123,0,Red);
return(0);
}
------------------------------------------------------------------------------------------
入力終わったらコンパイルして動かすと・・・
死にます(笑)
たった、一行で口座を破壊するプログラムというのはこうゆうものです。
一見すると問題なさそうに見えるから余計タチが悪いんです。
このプログラムには
「重複注文をしないでね」
という命令がありません。
EAは「値動きがある度」に稼働する為、このプログラムを安易に動かすと、、
ひたすら延々と「買い注文」を続けてしまいます。
それこそ口座が破裂するまで・・・
大勝を狙い、リスクの高い取引をして結果的に負けたならまだしも
ほんのちょっとしたプログラミングミスで、口座破たんしてしまっては目もあてられません。
だからこそ、、、
必ず、、、デモ口座で動作確認
してください。
ちなみに私も、過去いきなり、リアル口座で動かしてしまい悲惨な目にあったことがあります。
重複注文をしないようにする方法は
たくさんありますが、
一例を紹介します。
------------------------------------------------------------------------------------------
int BUY_Order = 0;
int start()
{
if (BUY_Order == 0 )
{
OrderSend(Symbol(),OP_BUY,0.1,Bid,5.0,0,0,NULL,123,0,Red);
}
BUY_Order = 1;
return(0);
}
------------------------------------------------------------------------------------------
これで、とりあえず次々に発注する事だけは避けれます。
プログラムの詳細な説明は次回ということで・・・・
とりあえず今回は・・・
1 EAは、値動きがある度に作動する
2 勝てるEAは簡単には作れないが、口座を破壊するEAは一行で作れる
3 EAを作ったら、最初はデモ口座で動かす。リアル口座ですぐに動かすの は自殺行為
この三つの事を心に刻んでください。