ナンセンスではありません。プログラムが機械語で書かれているときに必要だった。そして、教科書に引きずり込まれ、普通の言語でプログラムを記述するとナンセンスになってしまう。そして、USPD(Unified System for Program Documentation)というのがありました。そして、それをお客様に提出するためには、非常に厳しいルールに則って作成する必要がありました。ブロック図やいろいろな説明書きがあったはずです。
Краткая сборка софта созданного мной , для торговой платформы MetaTrader 4. Все имущественные права на данный софт принадлежат заказчикам, как правообладателям. И не могут быть переданы третим лицам без их (правообладателей) согласия. Я за собою оставляю авторское право как создатель данного софта. Quick assembly of software created by me for...
Простой и довольно эффективной логикой написания боевого робота является следующая схема: - робот делится на две части: тестер и синхронизатор. - тестер на основании ранней истории и только что пришедшей выдает текущее состоянии торговой стратегии. - синхронизатор "переносит" текущие тестерные открытые позиции и приказы на реал.
Это чем-то напиминает копирование торговых сигналов с одного счета на другой. Только вместо примитивного копировщика работает грамотный синхронизатор.
К сожалению, правильную логику синхронизатора посмотреть где-либо практически невозможно, поэтому озадачевшемуся придется подумать самому - очень полезно.
Но и такая логика построения боевого-робота далеко не совершенна, т.к. встает дилема первичности курицы и яйца. Поэтому применяются более сложные свои схемы, основанные на опыте автора-алготрейдера.
Все эти действия совершаются только ради одного - адекватной настройки стратегии. Какой бы совершенной не была схема, все равно одинаковые боевые роботы на разных счетах одного и того же ECN/STP брокера покажут расхождения. И помимо поиска рыночных закономерностей, важной задачей для алготрейдера также является уменьшение этих расхождений. Как уже говорилось выше, чем ближе брокер к возможстям HFT, тем меньше расхождения.
Если вникнуть в написанное, должно прийти понимание, что результаты работы стратегии на реале являются также своего рода тестером. И выводы на основании этой торговли также должны быть вероятностными.
// Тестовый советник для тестирования обученных в GPU-оптимизаторе нейросеток (или записи значений котировок/индикаторов для отправки исходных данных в тот же оптимизатор).
voidOnTick()
{
if(Mode==TradesMode) //-- Если режим тестирования
{
for(int i=0;i<CountInd;i++)
{
vInds[i]=GetInd(i,0); // получаем значения индикаторов
}
Net.CalcResult(vInds); // рассчитываем значение нейросетки
float net_result=Net.NetResult[0]; // забираем рекомендованную рыночную позицию
SP.Pos=net_result*Lot; // заполняем структуру для MarketDriver'a
int err;
MD.Synhronize(SP,err); // синхронизируемся с торговым сервером.
}
else// Mode==RecordMode // Если режим записи
..............
ZS.ちょっと小さいので、もっとグローバルなものをやりませんか?
さて、(一般的に)タディプリックは、これらのギャップをトップ4にどのように埋めますか。すべてがDLLに含まれていますか? :)
DLLなし、 イベント処理用の純粋なMCL+winepi。
これに関して、私たちはすべてを美しく説明し、素晴らしい記事を作る時間を見つける必要があります。 MT4のビジュアル疑似クラスの例または実装のいずれかを投げることができますが、詳細な説明なしでは理解するのは難しいでしょう。 JSとの類推によってMT用のDOM(データオブジェクトモジュール)を作成することの本質-とにかくそれらは本当に似ています。シードの場合-いわば心臓の主な機能:
特定のオファーがありますか?
あり、タスクは生きていますが、私はここでそれを発音することを恐れています、私は個人的にすることができます。
今どき、普通のプログラマーがフローチャートを描くことはない。これはすべて、小学生に教えるための机上の空論であり、実際のプロジェクトでは通用しない。
DLLを使わず、純粋なMCL+イベント処理 にVinapiを使用。
これについては、時間を見つけて、すべてをうまく表現し、大きな記事にする必要があります。MT4用のビジュアル擬似クラスの例か実装のどちらかを投げられますが、詳細な説明がないと消化しきれないと思います。本質は、JSとのアナロジーでMT用のDOM(Data Object Module)を作ることであり、両者は実によく似ている。入門編に。いわば心臓の主な働きです。
(そう、ブランコで。))
DOM - それは大変だ、せめてスクリーンショットを2枚ほどくれ......。あるいは、(もしあれば)スタンドアロンでコンパイルされたサンプルで、ターミナルでそれを感じられるようにします。あるのか?
(笑...)ドカンとね。))
DOM - それは大変だ、せめてスクリーンショットを2枚ほどくれ......。あるいは、(もしあれば)スタンドアロンでコンパイルされたサンプルで、ターミナルでそれを感じられるようにします。あるのか?
試してみようか?
何もない。
1.パネルは最後尾にある。戦略は一次的なもので、それがうまくいかなければ、パネルは無意味で役に立たない。
2.取引部分の実装はストラテジーに依存するため、仮想ストラテジーの嵐という枠組みで議論することはない。戦略の実行も、不思議なことに、戦略次第なのです :)
3.取引ブロックに計上されているストラテジーを無効にするトリガーを即座に作成する。そして、新規注文を無効にする。
4.パネルパネルとは何か、それは日課である。
TSの書き方としては、次のような感じです。
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
MT5での高頻度取引に関する考察
hrenfx, 2013.02.06 14:30
Простой и довольно эффективной логикой написания боевого робота является следующая схема:
- робот делится на две части: тестер и синхронизатор.
- тестер на основании ранней истории и только что пришедшей выдает текущее состоянии торговой стратегии.
- синхронизатор "переносит" текущие тестерные открытые позиции и приказы на реал.
Это чем-то напиминает копирование торговых сигналов с одного счета на другой. Только вместо примитивного копировщика работает грамотный синхронизатор.
К сожалению, правильную логику синхронизатора посмотреть где-либо практически невозможно, поэтому озадачевшемуся придется подумать самому - очень полезно.
Но и такая логика построения боевого-робота далеко не совершенна, т.к. встает дилема первичности курицы и яйца. Поэтому применяются более сложные свои схемы, основанные на опыте автора-алготрейдера.
Все эти действия совершаются только ради одного - адекватной настройки стратегии. Какой бы совершенной не была схема, все равно одинаковые боевые роботы на разных счетах одного и того же ECN/STP брокера покажут расхождения. И помимо поиска рыночных закономерностей, важной задачей для алготрейдера также является уменьшение этих расхождений. Как уже говорилось выше, чем ближе брокер к возможстям HFT, тем меньше расхождения.
Если вникнуть в написанное, должно прийти понимание, что результаты работы стратегии на реале являются также своего рода тестером. И выводы на основании этой торговли также должны быть вероятностными.
何もない。
1.パネルは尾翼に直行。戦略は第一、突っ走らなければ、パネルは無意味で役に立たない。
2.取引部分の実装はストラテジーに依存するため、仮想ストラテジー突撃の枠組みで議論することはない。戦略の実行は、奇妙なことに戦略にも依存するのです :)
3.取引ブロックに計上されているストラテジーを無効にするトリガーを即座に作成する。そして、新規注文を無効にする。
4.パネルなんというパネル-ルーティンなんだ。
さて、ここで一気に論点を整理する。:))
議論するためではなく、可能性を指摘するためとでも言いましょうか。
1.パネルが尾翼に直行する。戦略が第一で、突っ走らなければ、パネルは無意味で役に立たない。
ここまでは同感ですが、注意点があります。プログラムは2つのモードで動作するよう即座に方向付ける必要があるので、パネルからの制御の有無、パネルへの情報表示の有無を考慮して、戦略/取引部分を一度に規定する必要があります。
取引部分はすべてクラス(CMarketDriver)で書かれており、注文入力、ポジション追跡、リクオート、その他取引に関連するものを完全に実装しています。すべてのシンボルを一度にストラテジー部は、シンボルの推奨ポジションを受け取るだけです。つまり、{string Instrument; double Position}という形式の構造体の配列に 入力し、サーバーに同期を要求します。 MD.Synchronize(PositionArray) 以上がその内容です。現在は成行注文のみですが、スプレッド内に指値を設定して取引するバージョン(取引コストを削減するため)も準備中です。取引ではテイクプロフィット/ストップは使用しませんが、MarketDriverはサーバーへの接続が長時間失われた場合に備えて保護ストップを置くことができます(ストップパラメータはドライバー設定で一度指定します)。 ところで、非常に成功しており、ほとんど何の問題もなくソリューションが構成されています。 テスターでの戦略的アイデアのテストについては、取引で問題はなく、すべての注意を戦略に注ぐことができます - すべての取引が長いデバッグと取引ドライバーのカプセル化されています。
2......ということで、仮想の戦略突撃の枠内で議論することはない。戦略の実行は、奇妙なことに戦略にも依存するのです :)
例えば、2つのワイパーが交わることで取引するという斬新なアイデアがあるのですが、この場合、開発時に(例えば3つ目のワイパーを追加する)コードの大部分を変更する必要がないようにプログラムを再構築することが問題です。そのとき、プログラムは多通貨化に向けて発展するかもしれない(プロジェクトの簡略化のため、記号による取引は厳密に独立しており、相互関係は考慮されていないとする)。 そのような発展を見越した上で、戦略部分をどのように整理すればよいのだろうか。
3.取引ブロックに考慮されているストラテジーを無効にするトリガーを即座に設定します。そして、新規発注を無効にする。
しかし、その必要はない。 何しろ、ここでのトラブルはあまり期待できないのだから。
4.パネルまあ、パネルが雑なんですけどね。
特に、異なるExpert Advisorに簡単に適用でき、プロジェクトの成長/発展に合わせて簡単に開発できる、そのようなパネルの多かれ少なかれ普遍的なテンプレートを開発しようとすると、戦略のイベント駆動型のパネルとの接続の構成は、かなり創造的な作業となります。
そんなことしなくても、ほとんど私に左右されることはありません。
私の場合、ほとんどいつも依存します。特にECNと連携している場合。つまり、すべてはもちろん最低レベルで行われているわけではなく、標準的な取引機能の 殻を破っているだけなのです。
私の場合、ほとんどいつも依存します。特にECNと連携している場合。つまり、すべてはもちろん最低レベルで行われているわけではなく、標準的な取引機能の 殻を破って行われているだけなのです。
まあ、それはそれで悪いことなのですが。 ECNとの関係がそこでどうなるかはわかりませんが(RoboForexに口座開設予定)、この構造的デカップリング(戦略とマーケットドライバー)を維持するためにがんばろうと思います。 あまりに便利なので、多少の取引コスト(利益損失など)も覚悟の上でやっています。
最終的にEAのメインサイクルがいかにシンプルに見えるかをご覧ください。
簡易テスター版をご覧いただき、気に入ったものがあれば、微調整してご活用ください。