- Подпишитесь на торговый сигнал прямо в MetaTrader 5
- Интернет трейдинг на Форексе и фондовых рынках с MetaTrader 5
- MetaTrader 5 для Форекса, фондовой биржи и фьючерсов
На разных компьютерах терминал подключен к одному и тому же торговому счету? Учтите, что в данном случае говорится о неправильном заполнении торгового запроса, который должен соответствовать режиму торговли на счете.
и там и там открывался стандартно по умолчанию предлагаемый демо-счет(MetaQuotes-Demo). Если это поможет то вот мой запрос
input double sl = 2200;
input double tp = 1000;
input double lots = 0.1;
bool OrderSELL(string InstrumentID)
{
FileWrite(fileHandle,""+TimeToString(TimeCurrent(),TIME_DATE|TIME_MINUTES|TIME_SECONDS)+" s-> Ордер SELL по "+InstrumentID+" по цене "+SymbolInfoDouble(InstrumentID,SYMBOL_BID));
MqlTradeRequest MtRequest;
MqlTradeResult MtResult;
MtRequest.action= TRADE_ACTION_DEAL;
MtRequest.magic = 888;
MtRequest.symbol = InstrumentID;
MtRequest.volume = SizeLots(InstrumentID, POSITION_TYPE_SELL)+lots;
MtRequest.price=SymbolInfoDouble(InstrumentID,SYMBOL_BID);
MtRequest.sl = MtRequest.price + (sl*SymbInfo.Point());
MtRequest.tp = MtRequest.price - (tp*SymbInfo.Point());
MtRequest.deviation=3;
MtRequest.type=ORDER_TYPE_SELL;
MtRequest.type_filling=ORDER_FILLING_FOK;
FileWrite(fileHandle,"////-s-////транзакция SEL price="+MtRequest.price+" volume="+MtRequest.volume);
if(!OrderSend(MtRequest,MtResult))
{
//Print("Ошибка открытия SELL "+MtResult.retcode);
Print(ErrMTS.CodeError(MtResult.retcode));
FileWrite(fileHandle,ErrMTS.CodeError(MtResult.retcode));
return(false);
}
FileWrite(fileHandle,"////-s-////транзакция SEL конец");
return(true);
}
//+------------------------------------------------------------------+
double SizeLots(string InstrumentID,ENUM_POSITION_TYPE PosTyp)
{
double dblTotalLots=0;
if(PositionSelect(InstrumentID)==false)
{
return(0);
}
if(PosTyp==PositionGetInteger(POSITION_TYPE))
{
return(0);
}
else dblTotalLots=PositionGetDouble(POSITION_VOLUME);
return(dblTotalLots);
}
//+------------------------------------------------------------------+
- www.mql5.com
snik_666:
Вижу ставшей уже притчей во языцех фишку:
MqlTradeRequest MtRequest; MqlTradeResult MtResult;
С осени прошлого года стали вылезать ошибки при использовании этой конструкции, поэтому было предложено обнулять переменные
MqlTradeRequest MtRequest={0}; MqlTradeResult MtResult={0};
Попробуйте. А вот почему на разных компьютерах разное поведение - это следующий вопрос.
Попробуйте. А вот почему на разных компьютерах разное поведение - это следующий вопрос.
Может зависеть от операционной системы и битности.
MqlTradeRequest MtRequest={0}; MqlTradeResult MtResult={0}; и все заработало! Спасибо!
Вроде бы писали что такое обнуление ,обнуляет только первый элемент в структуре.
MqlTradeResult MtResult={0};
А ZeroMemory всю структуру.
Вроде бы писали что такое обнуление ,обнуляет только первый элемент в структуре.
Нет, что то вы путаете:) Инициализация переменных:
Для переменных типа структур допускается частичная инициализация, это же относится и к статическим массивам (с явно заданным размером). Можно проинициализировать один или несколько первых элементов структуры или массива, оставшиеся элементы в таком случае будут проинициализированы нулями.
Вроде бы писали что такое обнуление ,обнуляет только первый элемент в структуре.
А ZeroMemory всю структуру.
Не, тогда Ренат пояснил мне, что во фразе MqlTradeRequest MtRequest={1} инициализируется единицей только первое поле, остальное - нули (я ожидал, что все поля будут равны 1). Действительно, не делал акцент на этом ранее при прочтении документации.
А вот и Рош добавил ссылку.
так и получилось. На одном win7 64х. а на хр добавил
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования