bool takelimit; // Здесь переменная равна false//--- Здесь вот что: сначала выбирается ордер по тикету (MODE_TRADES здесь не нужно от слова "совсем", что говорит о том, что вы не представляете что вы делаете), //--- далее переменной takelimit присваивается результат работы функции выбора ордера, //--- и если ордер есть с таким тикетом, или был когда-то, то функция вернёт true, и takelimit будет присвоено true, соответственно, будет выведен код последней ошибки,//--- что вовсе не говорит, что ошибка здесь была при выборе ордера по тикету - вы же переменную, хранящую код последней ошибки, не сбросили при помощи ResetLastError()//--- И далее вообще не понятно к чему у вас фигурные скобки - они висят в пустоте, а это составной оператор, который должен после условия идти.if(takelimit=OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print(string(takelimit)+" :",GetLastError());//здесь возвращает число 11, получается ошибка код 11, но не нашел расшифровку нигде?
{
if(iBarShift(Symbol(),0,OrderOpenTime())==1)
deletelimit=OrderDelete(ticket);
if(!deletelimit)
Comment(GetLastError());
}
//+------------------------------------------------------------------+//--- А нужно примерно так (фигурные скобки специально оставил для понимания где какой блок кода):ResetLastError();
if(OrderSelect(ticket,SELECT_BY_TICKET) && OrderCloseTime()==0)
{
if(iBarShift(Symbol(),PERIOD_CURRENT,OrderOpenTime())==1)
{
if(!OrderDelete(ticket))
Print("Ошибка удаления ордера #",(string)ticket,": ",GetLastError());
}
}
else
{
Print("Ошибка выбора ордера #",(string)ticket,": ",GetLastError());
}
int ticket;
void Fn()
{
ResetLastError();//Сбрасываем код предыдущей ошибкиif(!OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)){Print(GetLastError());}//Если не выбран ордер по указанному тикету-принтим код ошибкиelse//иначе(если ордер нашёлся)
{
if(iBarShift(Symbol(),0,OrderOpenTime())==1 && !OrderDelete(ticket)){Comment(GetLastError());}//Если выбранный ордер открылся на предыдущем баре и не удалось его удалить(надеюсь Вы работаете с отложенниками)-тогда выводим комент ошибки
}
}
みなさん、こんにちは。
なぜ簡単な条件がうまくいかないのか、半日かけて解明しました、よろしくお願いします。
私は履歴データで実行されている、変数macd1,2、lowprice、highpriceは値が割り当てられていますが、条件は実行したくない、私は私の頭が掘る場所を理解することはできません壊した...(((
1 と 1 かもしれない /true とエラーコード 1 です。
全く混乱し、何をやっているのか理解できない
Print(takelimit,GetLastError()) は、1番目の変数がbool型なのでGetLastErrorを必要とせず、カンマがあるのでGetLastErrorはGetLastError呼び出し時のコードで最後のエラーを返すので2値を返しますか。
ああ...印刷する値が2つある......。
ほぼその通りのことを書いていますね。
はい...印刷する値は2つです...。
ほぼその通りのことを書いていますね。
完全な混乱と勘違い...。
実際には何もしていないのですが、男が11の代わりに1と1をプリントすると思い込んでいただけなのです))
ということで、以上です...
完全に混乱と誤解を招いている...。
あ...レス先が違うのか...なるほど)
実際には何もしていないのですが、相手が11ではなく、1と1をプリントすることを想定しています)。
ここのセリフのようにね。
11 "と印字すればよいのでしょうか?
その時は「1:1」と表示されますよ。
エラーコード 1は、エラーは発生していないが、結果は不明である。
ここのセリフのようにね。
11 "を印刷できるのか?
その時は「1:1」と表示されますよ。
エラーコード 1は、エラーは発生していないが、結果は不明である。
はい、もう変えました!(笑
あ...レス先が違うんですね...なるほど)
はい、私はあなたが返信していたのと同じ人に返信していたのです。しかし、あなたは間違ったことも伝えました。MODE_TRADESが必要なときとそうでないときを読み分けてください。また、チケット上でどのように注文を選択 するべきか。
まあ、そうですね、私はあなたが答えているのと同じ人に答えていたのです。MODE_TRADESが必要なときと不要なときを読み取ることです。また、チケット上でどのように注文を選択 するべきか。
MODE_TRADESはまだ見ていません、11がプリントされた作品だけですが...。