コーディングの方法は? - ページ 223

 

...

私は(csvファイルに値を書き込むあなたのEAを見ることができないので)あなたが1つのFileFlush()を欠いていることを考える。ファイルを閉じることなく、「他の人」からすぐにアクセスできるようにしたい場合(暗黙のうちにフラッシュを使用している )には、常に変更をディスクにフラッシュする必要があります。

よろしくお願いします。

mladen

sunshineh:
こんにちは。

CSVファイルを扱うEAを書いています。

テスト用にCSVファイルを以下のフォルダに置いています。

/tester/files

これは私のEAからのほんの一部です。

int handle = 0;

int Long = 0;

handle=FileOpen("LongMarket.csv",FILE_CSV|FILE_READ,';');

if (handle > 0)

{

Long= FileReadNumber(handle);

FileClose(handle);

}

Print("LongMarket = ", Long);

Print("Long handle = ", handle);

私のEAでは、CSVファイルを読み込んで、いくつかの整数を書き込んでいます。

今、私がテストを行い、ジャーナルで「印刷」メッセージを読むと、しばしばCSVファイルにもう書き込まれていない古い整数が表示されるのです!

例えば

最初に3が書き込まれ、EAが動作して0をファイルに書き込んだ。

そのCSVファイルには3しか表示されない。

そのCSVファイルを消去して、3の入った新しいCSVファイルを" /tester/files "フォルダに入れると、以前のテストから0しか読めなくなります!!!!でも、EAがどこで0を読み取るのかがわからない!!!!

私は気が狂いそうです!!!!!!!

私の質問を理解し、ヒントを与えてくれることを期待します!
 

警告機能を追加したいのですが、どなたか教えてください。

このインジケーターのアラーム機能、カラーアラームを追加したいのです。長い間、"if alarm "を使って試してみましたが、成功したことがありません。どなたか助けていただけませんか?ありがとうございました。~ 英語は苦手なので、申し訳ありません。

#property indicator_chart_window です。

#プロパティ indicator_buffers 4

#property indicator_color1 フォレストグリーン

#property indicator_color2 Red(インジケーターカラー2 レッド

#property indicator_color3 ブラック

#property indicator_color4 ブラック

//---- 入力パラメータ

extern int FastClosePeriod=13;

extern int FastCloseShift=0;

extern int FastOpenPeriod=34; extern int FastCloseShift=0; extern int FastOpenPeriod=34;

extern int FastOpenShift=0;

extern int SlowClosePeriod=34;

extern int SlowCloseShift=0;

extern int SlowOpenPeriod=62;

extern int SlowOpenShift=0;

//----インジケータ・バッファ

double ExtBlueBuffer[];

double ExtRedBuffer[];

double ExtDarkVioletBuffer[]; double ExtDarkVioletBuffer[];

double ExtBlackBuffer[];

//+------------------------------------------------------------------+

//| カスタムインジケータ初期化関数

//+------------------------------------------------------------------+

int init()

{

//---- 描画時のラインシフト

SetIndexShift(0,FastCloseShift)を設定します。

SetIndexShift(1,FastOpenShift)を設定します。

SetIndexShift(2,SlowCloseShift)を設定します。

SetIndexShift(3,SlowOpenShift)を設定します。

//---- 最初の位置は描画時にスキップされる

SetIndexDrawBegin(0,FastCloseShift+FastClosePeriod)を設定します。

SetIndexDrawBegin(1,FastOpenShift+FastOpenPeriod)を設定します。

SetIndexDrawBegin(2,SlowCloseShift+SlowClosePeriod); SetIndexDrawBegin(2,SlowCloseShift+SlowClosePeriod);

SetIndexDrawBegin(3,SlowOpenShift+SlowOpenPeriod)を設定します。

//---- 3つの指標バッファのマッピング

SetIndexBuffer(0,ExtBlueBuffer)を設定します。

SetIndexBuffer(1,ExtRedBuffer)を設定します。

SetIndexBuffer(2,ExtDarkVioletBuffer)を設定します。

SetIndexBuffer(3,ExtBlackBuffer)を設定します。

//---- 描画の設定

SetIndexStyle(0,DRAW_HISTOGRAM,0,2)を設定します。

SetIndexStyle(1,DRAW_HISTOGRAM,0,2)を設定します。

SetIndexStyle(2,DRAW_NONE,0,2)を設定します。

SetIndexStyle(3,DRAW_NONE,0,2);

//---- インデックスラベル

SetIndexLabel(0, "FastClose");

SetIndexLabel(1, "FastOpen"); //SetIndexLabel(1, "FastOpen")。

SetIndexLabel(2, "SlowClose"); SetIndexLabel(1, "FastOpen");

SetIndexLabel(3, "SlowOpen"); SetIndexLabel(3, "SlowOpen");

//---- 初期化完了

return(0);

}

//+------------------------------------------------------------------+

//| 9SQUAREDER|9SQUAREDER|9SQUAREDER|9SQUAREDER|トレーダー

//+------------------------------------------------------------------+

int start()

{

int limit;

int counted_bars=IndicatorCounted();

//エラーの可能性をチェック

if(counted_bars<0) return(-1);

//---- 最後にカウントされたバーが再カウントされる

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

//---- メインループ

for(int i=0; i<limit; i++)

{

//---- SetIndexShift が呼び出されたので ma_shift を 0 にする.

ExtBlueBuffer=iMA(NULL,0,FastClosePeriod,0,MODE_EMA,PRICE_CLOSE,i)となります。

ExtRedBuffer=iMA(NULL,0,FastOpenPeriod,0,MODE_EMA,PRICE_OPEN,i); ExtRedBuffer=iMA(NULL,0,FastOpenPeriod,0,MODE_EMA,PRICE_OPEN,i);

ExtDarkVioletBuffer=iMA(NULL,0,SlowClosePeriod,0,MODE_EMA,PRICE_OPEN,i); ExtDarkVioletBuffer=iMA(NULL,0,SlowClosePeriod,0,MODE_EMA,PRICE_OPEN,i);

ExtBlackBuffer=iMA(NULL,0,SlowOpenPeriod,0,MODE_EMA,PRICE_MEDIAN,i) とします。

}

//----完了

return(0);

 
 
ファイル:
example.gif  12 kb
example.mq4  3 kb
 
wolfe:
はい、どうぞ。 これは本当に素早く作りました、はい、できます。

コーディングの例として、添付のexample.mq4をご覧ください。

また、コメント付きのスクリーンショットが含まれており、RSI値が配列にティックごとに保存されていることがわかります。

wolfeさん、こんにちは。

タイマーと努力に感謝します。これを試してみます。

よろしくお願いします。

MSV

 
 

ボリンジャーバンド

こんにちは。

誰かがExcelスプレッドシートにボリンジャーバンド計算式(終値で20period dev 2)で私を助けてもらえますか? 事前にありがとうございます。

 

こんにちは、皆さん!

私のEAでは、「1日に1つの売買注文」だけを開く必要があるのですが、これを行うためのコードを教えてください。

 
Apolofx:
こんにちは!私は私のEAで "1日あたり "1つの売買注文を開く必要があります、お願いします、これを行うためのコードは何ですか?

すべてのクローズド・オーダーをループして、それぞれのシンボルとクローズ時間をチェックする必要があると思います...シンボル()にマッチし、最新のクローズ時間を持つものを取ります。

 

あるいは、もっと簡単な方法として、TimeDayOfYear関数を使って、シンボルとマジックナンバーが一致する最後のクローズドオーダーをチェックすればよいでしょう。 ただし、今日と同じ年の同じ日でないことを確認してください。

TimeDayOfYearの定義と使用方法については、ヘルプを参照してください。

参考

ラックス