[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 445

 

とんでもないところまで来てしまった問題がある。オーダークローズ機能でエラーが発生しました。

OrserClose(int tip){
if( tip==1){
for( i=0; i<OrdersTotal(); i++){
           if(true==OrderSelect( i, SELECT_BY_POS, MODE_TRADES)){
           if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderMagicNumber() == Magic){
           OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
               }
           }
         }  
}

エラーが発生する(端末によって異なる)

EURCHF,M5: OrderClose エラー 4107

EURCHF,M5: OrderClose関数に 無効な価格1.48566000があります。


しようものなら

OrderClose(OrderTicket(), OrderLots(),OrderClosePrice(),3, Violet);
OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symbol(),MODE_BID),3,Violet);

しかし、OrderClose(...) 別の関数ではなく、int start()の中に書くと、このエラーは 発生しません。

何が問題で、どうすれば解決するのか?



 
行ってみる
for( i = OrdersTotal() - 1;  i > 0;  i--)
 
T-G >>:

У меня проблема до смешного дошла. Ошибка в функция закрытия ордера.

дает ошибку (причем в разных терминалах)

EURCHF,M5: OrderClose error 4107

EURCHF,M5: invalid price 1.48566000 for OrderClose function


если сделать

таже самая ошибка. но причем когда я пишу OrderClose(..) не в отдельной функции а в int start() то такой ошибки не возникает.

в чем дело и как вылечить?









価格を正常化する

 

int tick = 0, MaxTicks = 5;
bool SaveTickOn = 1;
string bid_s;

int start(){
   if( SaveTickOn){
      int rw_mode = FILE_CSV| FILE_READ| FILE_WRITE;
      if( tick == 0) rw_mode = FILE_CSV| FILE_WRITE;
      int handle1 = FileOpen("bids1.dat", rw_mode," ");
      bid_s = DoubleToStr(Bid,Digits); 
      FileWrite( handle1, bid_s);
      if(GetLastError() != 0) Alert("Error= ",GetLastError());
      Alert( tick,": ", bid_s);
      tick++;
      if( tick == MaxTicks) SaveTickOn = 0; 
      FileClose( handle1);
   }
   return(0);
}

追記でファイルに書き込む 簡単なコードはありますが、なぜかオプションの

FILE_READ| FILE_WRITE 

は機能しない。

それは何でしょう?

 

これをスタートに入れておけば、条件を入れるだけで保証付きで全て終了する...。

if ( Close_) {
for (int trade = OrdersTotal() - 1; trade >= 0; trade--) {
OrderSelect( trade, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {

if ((OrderType() == OP_BUY) &&( условие закрытия для бай)) OrderClose(OrderTicket(), OrderLots(), Bid, slip, Blue);
if ((OrderType() == OP_SELL)&&( условие закрытия для селл)) OrderClose(OrderTicket(), OrderLots(), Ask, slip, Red);
}
Sleep(1000);
}
}
}
 
Andrei01 >>:

Есть простейший код для записи в файл с добавлением, но почему то опция добавления в файл

не работает.

Что это может быть?

また、FileIsEnding(handle1)関数が1のはずなのに0を返していることも確認しましたので、MT4のファイルへの追加モードにはバグがあるのでしょう。

 
Andrei01 писал(а)>>

また、FileIsEnding(handle1)関数が1のはずなのに0を返していることも確認しましたので、MT4のファイルへの追加モードにはバグがあるのでしょう。

ファイルの末尾に移動してみましたか?ファイルシーク(FileSeek)

 
//+------------------------------------------------------------------+
//| ファイルに文字列を書き込む ||
//+------------------------------------------------------------------+
void WritingLineInFile(文字列FileName, 文字列text)
{
int file_handle=FileOpen(FileName,FILE_READ|FILE_WRITE, " ");

if (file_handle>0)
{
FileSeek(file_handle, 0, SEEK_END);
FileWrite(file_handle,text)。
FileClose(file_handle)。
}

}
バグはありません、正しく書けばいいだけです。この関数は、FileName にテキストを追加します。
 

こんにちは。

自分でプログラミングをしようとしているのです

方向性を考えるのに役立つ!? 緊急かつ迅速に必要な場合(手始めに)

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

2つのMAで構成されるある指標があります

MessageBox」機能を使ってメッセージを表示した状態で、2つのMAが交差する地点で音信号を発生させる必要があります。

どうすればいいのか?

1 「MessageBox」関数を使ったスクリプトを作成する

2.または、この関数でインジケータコードに条件を追加する?

3.または、既存のスクリプトをインジケータにリンクさせる?可能であれば、どのようにリンクさせるか?

4.それともExpert Advisorを作成する方が簡単なのでしょうか?

もしあれば、2つの移動平均を持つシンプルなクラシックエキスパートアドバイザーのソースコードを送ってください。

(EA条件...速いМАが遅いMAを下から上へクロス(またはタッチ)したら買い

高速のМАが低速のMAを上から下へ横切る(または触れる)場合

StopLoss 機能を使用する場合

TakeProfit 機能を使用する場合

ロット機能付き........................

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

 
DRevodel писал(а)>>

こんにちは。

独学でプログラミングに挑戦!

どの方向に進めばいいのか、参考にしてください 緊急で早く必要な場合(手始めに)

2つのMAからなるある指標があります

MessageBox」機能を使って画面に出力されるメッセージと、2つのMAの交点で音信号を作成する必要があります。

どうすればいいのか?

または、この関数でインジケータコードに条件を追加しますか?

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