Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 1139
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Существуют ли роботы для андроид?
Автоторговли в мобильной версии Metatrader нет и, видимо, в обозримом будущем не появится. Если хочется рулить роботом с телефона - нужен VPS, на котором будет стоять терминал с роботом, + программа для удалённого доступа на телефоне.
Открываю в МТ5 десять недельных графиков валютных пар, в терминал загружается тиковая история в 800 мегабайт. И постоянно подгружается, хотя на графиках изменений почти нет. Вопрос - зачем мне тиковая история, если я пользуюсь только недельными графиками? К слову, на МТ4 недельные графики открываются мгновенно и без задержек.
это особенность мт5 - загружаем всё на М1, а потом строим требуемый период... селяви (
и так каждый раз, для каждого символа
Идея советника в покупке или продаже при касании ценой горизонтального уровня или линии тренда проведенных вручную. Составил советник из разных работающих советников и индикатора. Но советник не работает. Вернее открывает только SELL причем без сигнала на первом тике. Что не так?
/+------------------------------------------------------------------+
//| |
//| Copyright © 2010, MetaQuotes Software Corp. |
//| http://www.mql4.com/ru/users/rustein |
//+------------------------------------------------------------------+
#define MAGIC 131313 // открытие внутрь канала
//---------------------------------------
extern int TF=15;
//+------------------------------------------------------------------+
extern int StopLoss = 300;
//--------------------------------------------
extern double TakeProfit = 3000;
//--------------------------------------
extern int Per_MA= 20;
//---- constants
#define OP_BUY_ 0
#define OP_SELL_ 1
//-------------------------------------------------------------------+
extern double Lots = 0.1;
extern double MaximumRisk = 1;
extern double DecreaseFactor = 0;
bool b_1=true, s_1=true;
//+------------------------------------------------------------------+
//| Calculate open positions |
//+------------------------------------------------------------------+
double MA=iMA(NULL,TF,Per_MA,0,0,0,1);
int CalculateCurrentOrders(string symbol)
{
int buys=0,sells=0;
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
{
if(OrderType()==OP_BUY) buys++;
if(OrderType()==OP_SELL) sells++;
}
}
//---- return orders volume
if(buys>0) return(buys);
else return(-sells);
}
//+------------------------------------------------------------------+
//| Calculate optimal lot size |
//+------------------------------------------------------------------+
double LotsOptimized()
{
double lot=Lots;
int orders=HistoryTotal(); // history orders total
int losses=0; // number of losses orders without a break
//---- select lot size
//lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,2);
lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/100/MarketInfo(Symbol(),MODE_TICKVALUE)/StopLoss,2);
//---- calcuulate number of losses orders without a break
if(DecreaseFactor>0)
{
for(int i=orders-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }
if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;
//----
if(OrderProfit()>0) break;
if(OrderProfit()<0) losses++;
}
if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,2);
}
//---- return lot size
if(lot<0.01) lot=0.01;
return(lot);
}
//-------------------------------------------------
/* эта часть из индикатора*/
int CheckBreakoutLines(int shift)
{
// Total Objects
int obj_total = ObjectsTotal();
// Time of bar
datetime now = Time[shift];
// Iterate
for(int i = obj_total - 1; i >= 0; i--)
{
// Object name
string label = ObjectName(i);
// Types
int OType = ObjectType(label);
bool trendline = false;
bool hline = false;
// Price to evaluate
double cprice = 0;
// Trendlines
if(OType == OBJ_TREND )
{
bool ray = ObjectGet(label, OBJPROP_RAY);
if(!ray)
{
datetime x1 = ObjectGet(label, OBJPROP_TIME1);
datetime x2 = ObjectGet(label, OBJPROP_TIME2);
if(x1 < now && x2 < now) continue;
}
cprice = GetCurrentPriceOfLine(label, shift);
trendline = true;
} else if(OType == OBJ_HLINE ) {
cprice = ObjectGet(label, OBJPROP_PRICE1);
hline = true;
} else {
continue;
}
// Breakouts and false breakouts of trendlines and hlines
if(MA>cprice &&Ask<cprice)
{
if(trendline) { return(OP_BUY_); } else if(hline) { return(OP_BUY_); }
} else if (MA>cprice &&Ask<cprice) {
if(trendline) { return(OP_SELL_); } else if(hline) { return(OP_SELL_); }
}
}
return(EMPTY_VALUE);
}
double GetCurrentPriceOfLine(string label, int shift)
{
double price1 = ObjectGet(label, OBJPROP_PRICE1);
double price2 = ObjectGet(label, OBJPROP_PRICE2);
datetime d1 = ObjectGet(label, OBJPROP_TIME1);
datetime d2 = ObjectGet(label, OBJPROP_TIME2);
int shiftfrom = iBarShift(Symbol(), 0, d1, false);
int shiftto = iBarShift(Symbol(), 0, d2, false);
int lapse = MathAbs(shiftto - shiftfrom);
int distance = MathAbs(shift - shiftfrom);
double pendiente = (price2 - price1) / lapse;
double cpoint = price1 + (distance * pendiente);
return(cpoint);
}
//-------------------------------------------------------------------------------------------------------------
//+------------------------------------------------------------------+
//| Check for open order conditions |
//+------------------------------------------------------------------+
void CheckForOpen()
{
int res;
//--------------------------------------------------------------------+
//--------------------------------------------------------------------+
//---- buy conditions
if(OP_BUY_&&b_1)
{
res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,Ask-(StopLoss*Point),Ask+TakeProfit*Point," VV",MAGIC,0,Green);
b_1=false; s_1=true;
return;
}
//---- sell conditions
if(OP_SELL_&&s_1)
{
res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,Bid+(StopLoss*Point),Bid-TakeProfit*Point," VV",MAGIC,0,Red);
s_1=false;b_1=true;
return;
}
//----
}
//+------------------------------------------------------------------+
//| Start function |
//+------------------------------------------------------------------+
void start()
{
//---- check for history and trading
if(Bars<100 || IsTradeAllowed()==false) return;
//---- calculate open orders by current symbol
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
}
//+------------------------------------------------------------------+
//|---------------------------// END //------------------------------|
//+------------------------------------------------------------------+
Идея советника в покупке или продаже при касании ценой горизонтального уровня или линии тренда проведенных вручную. Составил советник из разных работающих советников и индикатора. Но советник не работает. Вернее открывает только SELL причем без сигнала на первом тике. Что не так?
/+------------------------------------------------------------------+
//| |
//| Copyright © 2010, MetaQuotes Software Corp. |
//| http://www.mql4.com/ru/users/rustein |
//+------------------------------------------------------------------+
#define MAGIC 131313 // открытие внутрь канала
//---------------------------------------
extern int TF=15;
//+------------------------------------------------------------------+
extern int StopLoss = 300;
//--------------------------------------------
extern double TakeProfit = 3000;
//--------------------------------------
extern int Per_MA= 20;
//---- constants
#define OP_BUY_ 0
#define OP_SELL_ 1
.....................................
.....................................
//---- check for history and trading
if(Bars<100 || IsTradeAllowed()==false) return;
//---- calculate open orders by current symbol
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
}
//+------------------------------------------------------------------+
//|---------------------------// END //------------------------------|
//+------------------------------------------------------------------+
Загрузил программу в блокнот и удалил пустые строки. Появилась возможность охватить взглядом. Нажал кнопку SRC и вставил. Вот что получилось. 1) Зачем определять
если уже есть OP_BUY=0 и OP_SELL=1
2) Корень зла вот в этом куске. Одно и то же условие (MA>cprice &&Ask<cprice) дважды проверяется, и принимаются разные решения.
3) Далее в каждой ветви выполняются проверки, а результат все равно один и тот же
и вообще строку выше можно упростить и записать так
if(trendline)return OP_BUY; if(hline) return OP_BUY; или еще проще if(trendline or hline) return OP_BUY;
Загрузил программу в блокнот и удалил пустые строки. Появилась возможность охватить взглядом. Нажал кнопку SRC и вставил. Вот что получилось. 1) Зачем определять
если уже есть OP_BUY=0 и OP_SELL=1
2) Корень зла вот в этом куске. Одно и то же условие (MA>cprice &&Ask<cprice) дважды проверяется, и принимаются разные решения.
3) Далее в каждой ветви выполняются проверки, а результат все равно один и тот же
и вообще строку выше можно упростить и записать так
Спасибо за ответ переделал но все равно открывает только SELL как я понял Так как OP_SELL =1. Это условие всегда выполняется. Я переделал так
ордера перестали открываться помоему не работает int CheckBreakoutLines(int shift) Может не там где надо стоит?
Уважаемые специалисты. Что надо сделать до установки, при установке МТ4 или после, чтобы в последствии история котировок писалась\считывалась с любого диска кроме системного или это НЕ возможно?
МТ4 от всех брокеров сваливают всё на C:\Users\MAN\AppData\Roaming\MetaQuotes\Terminal\100.......001\history\downloads (для каждого брокера и для каждого их терминала соответственно). По два МТ4 у двух брокеров для 3-4 пар съело 25Гбайт, то есть всю свободную память. Там же ещё необходимые котировки при тестировании подгружаются в тестер C:\Users\.......\tester\history.
Прошу помочь советом, не учитывающим переустановки Винды(у меня7) с перераспределением размеров дисков. Может я что то не так делаю? Если я пропустил, и это где то уже обсуждалось - бросьте пожалуйста в меня ссылкой...
Заранее благодарен.
Уважаемые специалисты. Что надо сделать до установки, при установке МТ4 или после, чтобы в последствии история котировок писалась\считывалась с любого диска кроме системного или это НЕ возможно?
МТ4 от всех брокеров сваливают всё на C:\Users\MAN\AppData\Roaming\MetaQuotes\Terminal\100.......001\history\downloads (для каждого брокера и для каждого их терминала соответственно). По два МТ4 у двух брокеров для 3-4 пар съело 25Гбайт, то есть всю свободную память. Там же ещё необходимые котировки при тестировании подгружаются в тестер C:\Users\.......\tester\history.
Прошу помочь советом, не учитывающим переустановки Винды(у меня7) с перераспределением размеров дисков. Может я что то не так делаю? Если я пропустил, и это где то уже обсуждалось - бросьте пожалуйста в меня ссылкой...
Заранее благодарен.
Перенеси простым копированием всю папку терминала на не системный диск, создай ему ярлык и пропиши ключ /portable