#property version"1.00"#property strictint test_ticket[2]={0,0};
double gl_lots,
gl_ask,
gl_bid;
string gl_comm;
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit() {
//---//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason) {
//---
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick() {
gl_lots=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
gl_ask=NormalizeDouble(Ask,_Digits);
gl_bid=NormalizeDouble(Bid,_Digits);
gl_comm="test";
//---if(AccountFreeMarginCheck(_Symbol,OP_BUY,gl_lots)<=0 || GetLastError()==134) {
printf("Not enough money for the minimum lot: %.4f",gl_lots);
return;
}
if(test_ticket[1]<8 && test_ticket[0]==0) {
test_ticket[0]=OrderSend((StringCompare(_Symbol,"NZDUSD")==0?"NZDUSD":_Symbol),OP_BUY,gl_lots,gl_ask,30,0.0,0.0,gl_comm,33333,0,clrNONE);
if(test_ticket[0]>0) test_ticket[1]++;
elseif(Fun_Error(GetLastError())==1) return;
}
if(test_ticket[0]>0)
if(OrderSelect(test_ticket[0],SELECT_BY_TICKET)) {
if(OrderCloseTime()==0 && OrderOpenTime()+300<TimeCurrent())
if(OrderClose(test_ticket[0],OrderLots(),gl_bid,30,clrNONE)) {
printf("Test order closed, ticket #%d",test_ticket[0]);
test_ticket[0]=0;
} elseif(Fun_Error(GetLastError())==1) return;
} elseif(Fun_Error(GetLastError())==1) return;
}
//+-------------- ФУНКЦИЯ ОБРАБОТКИ ОШИБОК ---------------------------------+int Fun_Error(int Error)
{
switch(Error)
{
case0: return (0);
case1: Print("Trying to change already set values with the same values.");return(1);
case2: Print("Common mistake. Stop all trading attempts until the circumstances are clarified.");return(0);
case3: Print("Wrong parameters passed to the trading function.");return(1);
case4: Print("The trading server is busy. Let's try again ..");Sleep(3000);return(1);
case5: Print("Old version of the client terminal.");return(0);
case6: Print("No connection to the trading server.");return(1);
case7: Print("Not enough rights.");return(1);
case8: Print("Too frequent requests.");return(1);
case9: Print("Invalid operation disrupting server operation.");return(1);
case64: Print("The account is blocked. It is necessary to stop all attempts at trading operations.");return(0);
case65: Print("Invalid account number.");return(1);
case128: Print("The transaction has expired.");return(1);
case129: Print("Wrong bid or ask price, possibly not normalized price.");return(1);
case130: Print("Stops that are too close or incorrectly calculated or abnormal prices in stops (or in the opening price of a pending order).");return(1);
case131: Print("Wrong volume, error in granulation of volume.");return(1);
case132: Print("The market is closed.");return(1);
case133: Print("Trade is prohibited.");return(0);
case134: Print("Not enough money to complete the operation.");return(0);
case135: Print("The price has changed. We try again ..");RefreshRates();return(1);
case136: Print("No price. We are waiting for a new tick ..");
while(RefreshRates()==false)// До нового тикаSleep(1);
return(1);
case137: Print("The broker is busy. Let's try again ..");Sleep(3000);return(1);
case138: Print("The requested price is out of date, or bid and ask are confused.");return(1);
case139: Print("The order is blocked and is already being processed.");return(1);
case140: Print("Only purchase allowed. You cannot repeat the SELL operation.");return(1);
case141: Print("Too many requests.");return(1);
case142: Print("The order is queued.");return(1);
case143: Print("The order has been accepted by the dealer for execution.");return(1);
case144: Print("The order is canceled by the client upon manual confirmation of the transaction.");return(1);
case145: Print("Modification is prohibited, because the order is too close to the market and is blocked due to possible early execution.");return(1);
case146: Print("The trading subsystem is busy. Let's try again ..");Sleep(500);return(1);
case147: Print("Using the expiration date of the order is prohibited by the broker.");return(1);
case148: Print("The number of open and pending orders has reached the limit set by the broker.");return(1);
case149: Print("An attempt to open an opposite position to an existing one if hedging is prohibited.");return(1);
case4000: return (0);
case4001: Print("Invalid function pointer.");return(1);
case4002: Print("Array index is out of range.");return(1);
case4003: Print("No memory for function stack.");return(1);
case4004: Print("Stack overflow after recursive call.");return(1);
case4005: Print("There is no memory on the stack for passing parameters.");return(1);
case4006: Print("There is no memory for the string parameter.");return(1);
case4007: Print("There is no memory for the time line.");return(1);
case4008: Print("Uninitialized string.");return(1);
case4009: Print("An uninitialized string in an array.");return(1);
case4010: Print("There is no memory for the string array.");return(1);
case4011: Print("Line is too long.");return(1);
case4012: Print("The remainder of division by zero.");return(1);
case4013: Print("Division by zero.");return(1);
case4014: Print("Unknown team.");return(1);
case4015: Print("Wrong transition.");return(1);
case4016: Print("Uninitialized array.");return(1);
case4017: Print("DLL calls are not allowed.");return(1);
case4018: Print("Unable to load library.");return(1);
case4019: Print("Unable to call function.");return(1);
case4020: Print("Calls to external library functions are not allowed.");return(1);
case4021: Print("There is not enough memory for the string returned from the function.");return(1);
case4022: Print("The system is busy.");return(1);
case4050: Print("Incorrect number of function parameters.");return(1);
case4051: Print("Invalid function parameter value.");return(1);
case4052: Print("Internal error of string function.");return(1);
case4053: Print("Array error.");return(1);
case4054: Print("Misuse of timeseries array.");return(1);
case4055: Print("Custom indicator error.");return(1);
case4056: Print("Arrays are incompatible.");return(1);
case4057: Print("Error processing global variables.");return(1);
case4058: Print("Global variable not detected.");return(1);
case4059: Print("Function not allowed in test mode.");return(1);
case4060: Print("Enter the HTTP address !!!.");return(1);
case4061: Print("Error sending mail.");return(1);
case4062: Print("A parameter of type string is expected.");return(1);
case4063: Print("A parameter of type integer is expected.");return(1);
case4064: Print("A parameter of type double is expected.");return(1);
case4065: Print("An array is expected as a parameter.");return(1);
case4066: Print("The requested historical data is in an update state.");return(1);
case4067: Print("An error occurred while performing a trading operation.");return(1);
case4099: Print("End of file.");return(1);
case4100: Print("An error occurred while working with the file.");return(1);
case4101: Print("Invalid file name.");return(1);
case4102: Print("Too many open files.");return(1);
case4103: Print("Unable to open file.");return(1);
case4104: Print("Incompatible file access mode.");return(1);
case4105: Print("No order has been selected.");return(1);
case4106: Print("Unknown character.");return(1);
case4107: Print("Incorrect price parameter for the trading function.");return(1);
case4108: Print("Invalid ticket number.");return(1);
case4109: Print("Trading is not permitted. You must enable the option Allow Expert Advisor to trade in the expert properties.");return(1);
case4110: Print("Long positions are not allowed. It is necessary to check the properties of the expert.");return(1);
case4111: Print("Short positions are not allowed. It is necessary to check the properties of the expert.");return(1);
case4200: Print("The object already exists.");return(1);
case4201: Print("An unknown property of the object was requested.");return(1);
case4202: Print("The object does not exist.");return(1);
case4203: Print("Unknown object type.");return(1);
case4204: Print("No object name.");return(1);
case4205: Print("Error coordinates of the object.");return(1);
case4206: Print("The specified subwindow was not found.");return(1);
case4207: Print("An error occurred while working with the object.");return(1);
return(0);
}
return(0);
}
//+---------------------------------------------------------------
コードを修正し、テスターで動作させたところ
エラーはありません。
そして、なぜあるのでしょう。預金で最小限のロットで開けない場合のみ。
これと10年
文句のつけようがない。
100年前のものでもいいんです。エラーコードを 記述するだけで、よく文句が言えるな。
この関数は、エラーコードを記述できるだけでなく (何もする必要はありません。ヘルプからコピーするだけです)、ハンドラのコードを出力する必要があります。どこもかしこも0か1のコードになっていますね。
関数の型がbool でなくintになって いるのはなぜですか?
そして、ハンドラーもいないんですね。しかし、あなたの処理では、ある関数が絶対にどんなサーバーの応答に対してもコード1を出力したら、単にreturnを実行するだけでいいのです。どこから来て、どこへ行くのか、それは誰にもわからない。
returnは処理ではなく、サーバーから返されたエラーコードを処理しなければならないという問題から逃避しているのです。
コードを修正し、テスターで動作させたところ
エラーはありません。
そして、なぜあるのでしょう。入金で最小ロットで開設できない場合。
このよう な場合は、ジャーナルにメッセージを表示し、Expert Advisorの操作を続行してください。
コードを修正し、テスターで動作させたところ
エラーはありません。
そして、なぜあるのでしょう。預金で無理な場合は最低ロットで開設する必要があります。
私も悩んでいたんです。
最小ロットを0.1に設定するまで
バリデータのMarketInfo()が最小値0.1ではなく、0(ゼロ)か0.01と答えたので、なぜ取引 できないのか理解できなかった;)
アルテム 全く違う話なんだけど。コードが透けて見える。どこに間違いがあるのか、教えてください。それが起こる正確な場所と状況を示してください。
私は、保証金が最小限のロットでオープンすることを許さない 場合、唯一の状況を参照してください。しかし、これはテスターの責任であり、なぜ最小ロットで取引を開始できないような条件を設定したのでしょうか。
NZDUSDだけずっとやってるんだろうか?
この初歩的なコードには、誰もが気づいているように、パラメータが全くありません。情報環境が提供する最小ロットでバカスカと取引してしまうのです。
もし、0.1というミニロットがあったら?
個人的には確信しています。
;)
ところで、チケットNo.0がないのは確かですか?:-)
もし、0.1というミニロットがあったら?
個人的には確信しています。
;)
No luck renat, 0.2))です。)まだminロットで開く可能性を確認していないテストです。
すべて過去の記事で紹介しています。
ところで、チケットNo.0がないのは確かですか?:-)
もう何も自信がありません ))))
当てずっぽうで、レナトさん、0.2))。まだminロットで開く可能性を確認していないテストです。
すべて過去の記事で紹介しています。
ザッツオール
テスターの場合はミニロットで厳しく、信用取引を開始する予定です。もちろん、スプレッドのコストを考慮して。
自由証拠金*0.9 > ロット*証拠金であれば、取引する。