extern int Lots = 0.1; extern int stoploss = 50; extern int takeprofit = 50; extern int iWPRperiod1 = 50; extern int iWPRperiod2 = 60; extern int magic = 555;
int start() {
int stoploss, takeprofit, iWPRperiod1,iWPRperiod2, magic, lots;
if (iWPR(NULL,0,iWPRperiod1,0)>iWPR(NULL,0,iWPRperiod2,0)) { OrderSend(NULL, OP_BUY,1,Ask,lots,stoploss,takeprofit,0,magic,0,Red); } if (iWPR(NULL,0,iWPRperiod1,0)<iWPR(NULL,0,iWPRperiod2,0)) { OrderSend(NULL, OP_BUY,1,Ask,Lots,stoploss,takeprofit,0,magic,0,Red); } return(0); }
>> すみませんが、Meta Quotesのサーバーからではなく、別の証券会社のサーバーから気配値履歴をダウンロードすることが可能かどうかを聞いているだけです。 MTSは私のものではないので、証券会社の変更に敏感かどうかを確認するつもりなので、あなたの思い込みは抑えてください(悪気はありません)。
EAで新しいバーの出現をキャッチするにはどうしたらいいですか?
このように:
静的 int LastBars;
IBARS = iBars(Symbol(), Period());
if (LastBars != IBARS)
{
LastBars = IBARS;
.......
......
.......
}
このように:
静的 int LastBars;
IBARS = iBars(Symbol(), Period());
if (LastBars != IBARS)
{
LastBars = IBARS;
.......
......
.......
}
新しいキャンドルの出現に伴うイベントはないのですね、ありがとうございます。
以上、いよいよプログラミングの勉強です!今からオタクな質問をたくさんしていきます。)
さあさあの1つです。
これは一体何なんだ? 簡単なExpert Advisorだ、何か間違ったことをしたのか?* このスクリプトに限らず、このエラーにはうんざりしているんだ。
extern int Lots = 0.1;
extern int stoploss = 50;
extern int takeprofit = 50;
extern int iWPRperiod1 = 50;
extern int iWPRperiod2 = 60;
extern int magic = 555;
int start()
{
int stoploss, takeprofit, iWPRperiod1,iWPRperiod2, magic, lots;
if (iWPR(NULL,0,iWPRperiod1,0)>iWPR(NULL,0,iWPRperiod2,0))
{
OrderSend(NULL, OP_BUY,1,Ask,lots,stoploss,takeprofit,0,magic,0,Red);
}
if (iWPR(NULL,0,iWPRperiod1,0)<iWPR(NULL,0,iWPRperiod2,0))
{
OrderSend(NULL, OP_BUY,1,Ask,Lots,stoploss,takeprofit,0,magic,0,Red);
}
return(0);
}
まず、ブレースを確認します。すべてオープニングブラケットです。{の代わりに{...}を使用します。最初のエラーは、プログラムの中で括弧が正しく配置されていないことを告げています。
すると、行末のセミコロンが足りないというメッセージが表示され、行番号まで表示されます。
そして、エラーを報告することは善行であり、......ではないので、このような善行が もっともっと増えるでしょう。エラーメッセージを 翻訳してください。ほぼすべてクリアしています。
。
皆さん、こんにちは。ここで質問です。
どのバージョンのコードがシステムリソース(と時間)に負担をかけないのでしょうか?
EAを書いてみましたが、かなりトリッキーな印象です、イマイチ。テストに時間がかかるので...。
どうにかして計算を短くできないかと考えています。
この場合、OrderType()を実行するのと、配列mass[i,1]の要素を取り出すのでは、どちらが簡単でしょうか?
...
OrderSelect(mass[i,0],SELECT_BY_TICKET); //выбрать ордер
sl=TRALING(OrderType()); //вычисляет стоп-лосс
...
//или
...
OrderSelect(mass[i,0],SELECT_BY_TICKET); //выбрать ордер
sl=TRALING_BARS(mass[i,1]); //вычисляет стоп-лосс
...
OrderStopLoss 等と同じです。
あるいは、たとえば。
...
//пересекла ли главная линия стохастика сигнальную линию сверху вниз
if(
iStochastic(Symbol(),0,KperiodF,DperiodF,SlowlingF,methodF,PriceFieldF,0,shiftF)>
iStochastic(Symbol(),0,KperiodF,DperiodF,SlowlingF,methodF,PriceFieldF,1,shiftF)&&
iStochastic(Symbol(),0,KperiodF,DperiodF,SlowlingF,methodF,PriceFieldF,0,0)<
iStochastic(Symbol(),0,KperiodF,DperiodF,SlowlingF,methodF,PriceFieldF,1,0))
...
//и ниже
...
//пересекла ли главная линия стохастика сигнальную линию cнизу вверх
if(
iStochastic(Symbol(),0,KperiodF,DperiodF,SlowlingF,methodF,PriceFieldF,0,shiftF)<
iStochastic(Symbol(),0,KperiodF,DperiodF,SlowlingF,methodF,PriceFieldF,1,shiftF)&&
iStochastic(Symbol(),0,KperiodF,DperiodF,SlowlingF,methodF,PriceFieldF,0,0)>
iStochastic(Symbol(),0,KperiodF,DperiodF,SlowlingF,methodF,PriceFieldF,1,0))
...
変数を作って関数値を代入してから使うのは意味があるのか、ないのか?
のようなタイプになります。
...
double a=iStochastic(Symbol(),0,KperiodF,DperiodF,SlowlingF,methodF,PriceFieldF,0,shiftF);
double b=iStochastic(Symbol(),0,KperiodF,DperiodF,SlowlingF,methodF,PriceFieldF,1,shiftF);
double c=iStochastic(Symbol(),0,KperiodF,DperiodF,SlowlingF,methodF,PriceFieldF,0,0);
double d=iStochastic(Symbol(),0,KperiodF,DperiodF,SlowlingF,methodF,PriceFieldF,1,0);
...
//пересекла ли главная линия стохастика сигнальную линию сверху вниз
if( a>b && c<d )
...
//пересекла ли главная линия стохастика сигнальную линию cнизу вверх
if( a<b && c>d )
...
ストップのたびに計算するのと、変数を作って一度だけストップをカウントし、変数から値を読み取るのとでは、どちらがコストがかかるのでしょうか?
プログラマーの方、アドバイスお願いします。ありがとうございました。
いいえ、私はあなたのコードを永久に修正するつもりはありません。それを見つける技術があるんですね。
ただひとつ注意すべきは、あなたの使っている表記が好きではないことです。このようにブラケットを配置することで、IMHOはエラーを見つけにくくすることができます。KimIVの 書き方を見てください。
皆さん、こんにちは。ここで質問です。
どのバージョンのコードがシステムリソース(と時間)に負担をかけないのでしょうか?
EAを書いてみましたが、かなりトリッキーな印象です、イマイチ。テストに時間がかかるんです。
どうにかして計算を減らすことができそうです。
この場合、OrderType()を実行するのと、配列要素mass[i,1]を抽出するのではどちらが簡単でしょうか?
停止するたびにカウントするのと、変数を作って一度停止をカウントし、変数から値を読み取るのとでは、どちらがコストがかかるでしょうか。
プログラマーの方、アドバイスお願いします。ありがとうございました。
0気圧で作業する必要があるのでしょうか?
あまりに短縮しようとするから、「そんなことより......」と思わずにはいられません。
0気圧で作業する必要があるのでしょうか?
もう、やたらと短縮しようとするから、「関係ないだろ...」と思われても仕方ない。
いや、ピプサじゃないんだ、そういう意味なら...。
とか、なんでうまくいかないんだろう...とか。
ただ、もう限界までマシンに負荷がかかっていて、CPUが煮詰まっている...。そして走り出すと、カウントが始まる...。
無駄に書き換えたくない......プログラムにはそんなものがたくさんあるのだから......。
では、その質問はどうでしょうか?