Expert Advisorでスクリプトを実行する - ページ 3

 
Dadas:


50ms毎とか、そういうティッカーで制御されたループでスクリプトを起動させる方法はないのでしょうか?

MT4のティックではダメですか?


私は自分自身でこれに答えることを試みるでしょう。

start()関数は新しい気配値、つまりブローカーのティックによって実行されるため、それは不可能です。

つまり、start()関数の中にループがあっても、新しいティックが入ったときだけループするのです。

だからブローカーには勝てないのです!(笑

とはいえ、こうしてスクリプトでEAを動かしていると

int start() {

while(1==1) {

MyEA();

}
}

このループのせいで、パソコンが重くなった。

日曜日に 試したので、マーケットが閉まっていました。

 
Dadas:


では、EAはスクリプトとして実行できるのでしょうか?ループで?

ただ、無限ループの場合、コンピュータは最終的にクラッシュします。

50ms毎とか、そういうティッカーで制御されたループでスクリプトを起動させる方法はありますか?

MT4のティックではなく?


スクリプトは、start()関数の 中で有限/無限ループを追加しない限り、一回だけ実行されます。もし、自分で生成したティックでスクリプトを起動したいのであれば、EAにしてオフラインのチャートに置いてください。
 
Dadas:


ただ、このようにスクリプトでEAを実行すると

このループのせいで、パソコンが重くなった。


あなたのコンピュータは、アップグレードが必要です ... ... または、交換が必要です。
 
RaptorUK:

あなたのコンピュータは、アップグレードが必要です ... ... あるいは、交換が必要です。

その通りです。それは古いものです。
 
RaptorUK:

スクリプトは、start()関数の中で有限/無限ループを追加しない限り、一回だけ実行されます。もし、自分で生成したティックでスクリプトを起動したいのであれば、EAにしてオフラインのチャートに置いてください。

オフラインのチャートで取引することはできません。
 
Dadas:

オフラインのチャートで取引できません。
なぜですか?
 

ダダス 2012.08.12 16:34
ダダス


50ms毎など、ティッカーで制御されたループでスクリプトをトリガーする方法はないでしょうか?

MT4のティックではダメなんですか?


これは自分でやってみます。

start()関数は新しい気配値、つまりブローカーのティックによって実行されるので、それはありえません。

つまり、start()関数の中にループがあっても、新しいティックが来たときだけループするのです。

だからブローカーには勝てないのです!(笑

とはいえ、こうしてスクリプトでEAを動かしていると

int start() {

while(1==1) {

MyEA();

}
}

このループのせいで、パソコンが重くなった。

日曜でマーケットが休みの日に試しました。

こんにちは、Dadasさん。

スクリプトはティック無しで実行され、EAはティックで実行されます。

無限ループを使用する場合は、Sleep()を追加してください(https://docs.mql4.com/common/Sleep)

以下のコードをスクリプトとして試し、インターネット接続をオフにして、タスクマネージャーを開き、スクリプトをチャートに添付してください。このスクリプトは、ティックを必要とせず、プロセッサをあまり使用せずに、無限ループします。

  int n;
  while (IsStopped() == false) // or while (true)
    {
    n++;
    Alert (n);
    
    Sleep (500); // add this !
    }

 
.
 
RaptorUK:
なぜダメなのですか?


教えてください!お願いします

オフラインのチャートでリアルタイムのライブ取引を行うにはどうすればよいですか?

 
onewithzachy:

こんにちは、ダダスです。

スクリプトはティックなしで実行され、EAはティックで実行されます。

無限ループを使用する場合は、Sleep()を追加してください(https://docs.mql4.com/common/Sleep)

以下のコードをスクリプトとして実行し、インターネット接続をオフにして、タスクマネージャーを開き、スクリプトをチャートに貼り付けてみてください。このスクリプトは、ティックを必要とせず、プロセッサをあまり使用せずに、無限にループします。


ありがとうございました。

あまりに簡単なので、自分で考えてみればよかった...。

疲れているのだろう。私の古いコンピュータのように-笑

でもね、私はちょっと違うことを考えていたんです。

MT4のライブトレードでティッキングをオーバーライドする方法を考えているんです。

ポイントは、ライブトレード中、ティックはEAを制御し、したがって、ブローカーも同様に制御することができるということです。

言い換えれば、もし私がEAにある条件下で注文をクローズさせたいなら、私はEAにそうして欲しいのです。

再提示は別として(これはブローカーを変えるしかないのですが)、チャート上で注文が閉じるはずなのに

私の注文がクローズするはずなのに、次のティックまでただぶら下がっていて、そして負ける、ということが頻繁に起こります。

もし私がEAに書いたら

if(AccountProfit()>0) { CloseAllOrders(); }

と書いたら、1ピップ以上の利益でクローズしてほしい。私は、1Pipのまま何もしないことを期待しているわけではありません。

ところで、私はEURUSDで1Pipの固定スプレッドで取引しています。

だから、私は明白なものを必要としませんし、Sleep()もオフラインのバックワードテスト以外では解決策になりません。

ところで、どんなバックワードテストも何の役にも立ちません - それはリアルタイムのテストではありません。

まあ、観察したり、チャートを研究したり、多くのことを学ぶには良いことです。

しかし、リアルタイムの取引では、あなたは未来を知らないし、間違いを犯すでしょう。

チャートで見たことよりも、EAを信じることです。- それが一番難しいところです。

だから、みんな、私の投稿を理解して読んでね。