どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 461

 
wolfovik:

問題解決に貢献しよう

ICustom関数を使用するとテスターのEAがハングアップする。何か解決策はあるのでしょうか?

また、ストラテジーテスターでは、PB Trade EURUSD,H1: OrderSenderror 130という エラーが常に発生します。

ストップ高は300点ですが!

ticket = OrderSend(Symbol(),OP_BUY,0.1,Ask,5,Bid-300*Point,Bid+300*Point);

こんなはずじゃなかった!?

RefreshRates();
ticket = OrderSend(Symbol(),OP_BUY,0.1,Ask,5,Bid-300*Point,Bid+300*Point);

どこで間違えたのだろう?


 
Dmitry01110:
こんにちは!FileOpen関数で作成したファイルを編集する方法を教えてください!例えば、現在の位置からバイトを削除して、その場所に別の バイトを挿入するなどです。


また、同じようなことをしようとしている。

1列しかない*.csvファイルがある、つまりその中の数字は互いに下を行き来する。ある数字が使われるたびに、その横にアイコンが表示され、その数字がEAによってすでに使われていることを示すようにしようとしています。

NUMBER]; [SIGN] の2列の *.csv ファイルを用意することができます。

 
wolfovik:

また、テスターでは、PB Trade EURUSD,H1: OrderSend error 130というエラーが常に発生しています。

ストップが300pipsになっていますが

こんなはずじゃなかった!?

どこで間違えたのだろう?


取引注文の 計算価格は、Digitsに正規化する必要があります。

ticket = OrderSend(Symbol(),OP_BUY,0.1,Ask,5,NormalizeDouble(Bid-300*Point,Digits),NormalizeDouble(Bid+300*Point,Digits));

また、ストップオーダー値がStopLevelの要件に対して有効であるかどうかをチェックする必要があります。

input int  StopLoss    =  300;   // Значение Stop Loss в пунктах
input int  TakeProfit  =  300;   // Значение Take Profit в пунктах
int   level=0, spread=0;
//+------------------------------------------------------------------+
//|   Старт                                                          |
//+------------------------------------------------------------------+
void OnTick() {
   level=MarketInfo(Symbol(),MODE_STOPLEVEL);
   spread=MarketInfo(Symbol(),MODE_SPREAD);
   if(level==0) level=spread*2;
//---
   int    ticket=0;
   double sl=0, tp=0;
   if(StopLoss>0) sl=NormalizeDouble(MathMin(Bid-StopLoss*Point,Bid-(level+1)*Point),Digits);
   if(TakeProfit>0) tp=NormalizeDouble(MathMax(Bid+TakeProfit*Point,Bid+(level+1)*Point),Digits);
   ticket = OrderSend(Symbol(),OP_BUY,0.1,Ask,5,sl,tp);
   return;
}

Buyの場合、おおよそこのような感じです。

 
Dmitry01110:
こんにちは、FileOpen関数で作成したファイルを編集する方法を教えて ください。
ファイルの全文を文字列変数に呼び出し、それを単純な変数として編集し、ファイルの書き込みのみを呼び出して変数を返すのです。
 
Roger:
ファイルの全文を文字列変数に呼び出し、それを単純な変数として編集し、そのファイルを書き込み専用に呼び出してその変数を戻すのです。

ファイルの文字数が、文字列変数の最大文字数を超えている場合は?
 
ちょっとだけわかった!あるファイルの位置の値を置き換えるには、FileSeekを使って前のバイトへのポインタを置き、FileWriteIntegerなどを使って そこに新しい値を書き込めば、古い値は上書きされます。主な点は、古い値と新しい値が同じサイズであることです。例えば、int型にはLONG_VALUEを使用します。
 
今日、端末をアップデートしてもらいました。今度はインジケーターが見えない...。 どうすればいいのか、ちゃんと入れたのか。前回と同じフォルダ(パス)に。
 

for(int l =StringLen(tfs)-1; l >= 0; l--){ int char = StringGetChar(tfs,l); }.

コードにエラーがあります。なぜ「シャア」が宣戦布告されるのか?どのように、何に置き換えることができるのでしょうか?

 
artmedia70:
ファイルの文字数が、文字列変数の最大文字数を超えている場合は?

文字列変数に制限はありません。というか、あるにはあるのですが、とても大きいのです。529ビルドのMT4では2147483647文字で、32ビットOSのMT4では2倍少なくなります。そして、それは常にではありません。異なるキーとPAEがあります。

Dmitry01110 です。
ちょっとだけわかった!あるファイルの位置の値を置き換えるには、FileSeekを使って前のバイトへのポインタを置き、FileWriteIntegerなどを使ってそこに新しい値を書き込むだけで、古い値は上書きされます。主な点は、古い値と新しい値が同じサイズでなければならないことです。例えば、int 型の場合は LONG_VALUE です。
はい、CSVの場合は文字数が一致する必要があります。

ゾロ目 です。

for(int l = StringLen(tfs)-1; l >= 0; l--) { intnChar= StringGetChar(tfs,l); }.

コードにエラーがあります。なぜ「シャア」が宣戦布告されるのか?どのように、何に置き換えることができるのでしょうか?

 
シーピー