int start() // Спец. функция start
{
//--------------------------------------------------------------- 2 --int Handle, // Файловый описатель
shift,Text; // Стиль вертикальной линииstring File_Name="News.csv", // Имя файла
Obj_Name, // Bмя объекта
Instr, // Название валюты
One,Two, // 1я и 2я чать названия инстр.
Str_DtTm; // Дата и время события(строка)datetime Dat_DtTm; // Дата и время события(дата)//--------------------------------------------------------------- 3 --
Handle=FileOpen(File_Name,FILE_CSV|FILE_READ,";");// Открытие файлаif(Handle<0) // Неудача при открытии файла
{
if(GetLastError()==4103) // Если файла не существует,..Alert("Нет файла с именем ",File_Name);//.. извещаем трейдера else// При любой другой ошибке..Alert("Ошибка при открытии файла ",File_Name);//..такое сообщPlaySound("Bzrrr.wav"); // Звуковое сопровождениеreturn(0); // Выход из start()
}
//--------------------------------------------------------------- 4 --while(FileIsEnding(Handle)==false)// До тех пор, пока файловый ..
{ // ..указатель не в конце файла//--------------------------------------------------------- 5 --
Str_DtTm =FileReadString(Handle);// Дата и время события(дата)
Text =FileReadString(Handle);// Текст описания события//--------------------------------------------------------- 6 --
Dat_DtTm =StrToTime(Str_DtTm); // Преобразование типа данных//--------------------------------------------------------- 7 --
shift=iBarShift(NULL,0,Dat_DtTm);
Alert("Время=",TimeToString(Time[shift]),"Text=",Text);
if(FileIsEnding(Handle)==true) // Файловый указатель в концеbreak; // Выход из чтения и рисования
}
//--------------------------------------------------------------- 8 --FileClose( Handle ); // Закрываем файлreturn(0); // Выход из start()
}
//--------------------------------------------------------------- 9 --
ヘルプを読めば、例題付きで書いてある。
ファイルデータからインジケータを描画することを思いつきました。
教科書に載っている例を取り上げてみました。私のニーズに合わせてスクリプトを作り直した。
Alert」の行は削除することができます。
ロジックとしては、インジケータで日付を取得し、ファイルと比較し、同じであればバッファに値を代入しています。
しかし、すでにデータが考慮されているファイルの先頭から各バーについて検索を始めると、かなりのコストがかかると思います。
問題は、インジケータで処理されたファイル行を固定し、その後に検索を開始する方法です。
この「20141231」という形式の日付が入った大きなファイルがあります。文字列を日付 形式に変換するには、年、月、数字の間に「YYYY.MM.DD」のドットが必要 です。
どうすればいいのでしょうか。
ありがとうございます、もう整理しました。元々カンマで区切られていたところを変換。カンマをドットに変更し、さらに2列目を追加し、すべて「uniCSVed」としました。
これで、プログラム的にどうすればいいのかがわかる。
このデータを使って、どのような指標を実現するかという、もう一つの大きな課題に直面しています。スクリプトを作りましたが、正常に動作しています。
しかし、インジケータでは、ブレーキを持っていないために、私は何とかデータの最後の繰り返しで取得した行を覚えておく必要があります。
ありがとうございます、もう整理しました。元々カンマで区切られていたところを変換。カンマをドットに変更し、さらに2列目を追加し、すべて「uniCSVed」としました。
これで、プログラム的にどうすればいいのかがわかる。
このデータを使って、どのような指標を実現するかという、もう一つの大きな課題に直面しています。スクリプトを作りましたが、正常に動作しています。
しかし、インジケータでは、ブレーキを持っていないために、私は何とかデータの最後の繰り返しで取得した行を覚えておく必要があります。
FileTell(対応するオープンファイルのファイルポインタの現在位置を返す)、 FileSeek(ファイルポインタの位置を指定位置から指定バイト 数だけ移動させる)などで 可能だと思わ れます。
ありがとうございました。また、このような機能にも注目しました。 また、FileIsLineEndingもある。どうすればいいのか、さらに考えてみます。
Ticket_first_orderはどのように定義するのですか?
OrderTicket()の値を 変数に代入する。例:int Ticket= OrderTicket().そして、この値をOrderSelectで使用します。
OrderSelect(Ticket,SELECT_BY_TICKET); .
別の方法でいいんです。チケットは定義せず、(SELECT_BY_POS)を試してオーダーを見つけるだけとします。
手に入れることができます。
string Symb=Symbol();
for(i=0;i<=OrdersTotal() ;i++)
{
if(OrderSelect(i,SELECT_BY_POS)==true)
{
if(OrderSymbol()!=Symb)continue;
if(OrderType()==OP_BUY)
{
break;
}
}
}
if(OrderOpenPrice()+10*Point<=Ask)
OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green);
OrderTicket()の値を変数に代入する。例:int Ticket= OrderTicket().そして、この値をOrderSelectで使用します。
OrderSelect(Ticket,SELECT_BY_TICKET); .
別のやり方でもいいんです。チケットは定義せず、試しにオーダーを検索してみましょう(SELECT_BY_POS)。
きっとうまくいく。
ここは初心者のためのトピックなので、私も質問させてください...。
1.見積書をダウンロードするためのソフトウェアAPIはありますか?理想はget/postリクエストです。
2.もし、広範なアクセスに対応するものがないのであれば、解析が容易で、1秒に1回、相場へのリアルタイムアクセスを提供できるプラットフォームは何でしょうか。
3.もちろん、オートメーションは何にでも書けます。でもやっぱり、どの言語やツールが一番便利で人気があるのか知りたいですよね。