Всем Здравствуйте. Я новичек в трейдинге, сижу на демо с советниками, но вот хочу начать реал с 45 долларов. Советников пока тестирую, поэтому хочу пользоваться сигналами. Пользуюсь МТ4. Я подобрал список из которого прошу помочь мне выбрать лучший сигнал. Вот список:
Добрый день. помогите пожалуста мене нужно чтобы при переменной сиг=1 переменая pol запомнила баланс и не менять его значение независимо сколько он будет показывать дальше а чтоб если опять сиг равно 1 запомнить текущий подскажите код пожалуста
sannin: Добрый день. помогите пожалуста мене нужно чтобы при переменной сиг=1 переменая pol запомнила баланс и не менять его значение независимо сколько он будет показывать дальше а чтоб если опять сиг равно 1 запомнить текущий подскажите код пожалуста
Составил советник для тестирования торговли, но ни как не могу докумекать до одной вещи...
открытие Bay/sell происходит по максимальным и минимальным МА
// Условие открытие позиции BUY if(MA_L1<MA_L0&&Ask<=MA_L0&&MA_0>MA_1&&HA_up>HA_dw)
// Условие открытие позиции SELL if(MA_H1>MA_H0&&Bid>=MA_H0&&MA_0<MA_1&&HA_up<HA_dw)
#include <b-Lots.mqh>externdouble TrailingStop = 30;
externdouble Sploss = 15;
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+int start() {
double HA_up,HA_dw;
double MA_H0,MA_H1,MA_L0,MA_L1,MA_0,MA_1;
int i, cnt, ticket, total;
bool flag=true;
if(Bars<100) {
Print("bars less than 100");
return(0);
}
// Проверяем стоит ли открываться
cnt=OrdersHistoryTotal()-1;
for(i=cnt;i>=0;i--) {
if(!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY )) continue;
if(OrderOpenTime()>=Time[0]) { // Time[0] - если позиция открывается на нулевом баре текущего символа
flag=false;
break;
}
}
cnt=OrdersTotal()-1;
for(i=cnt;i>=0;i--) {
if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
if(OrderOpenTime()>=Time[0]) { // Time[0] - если позиция открывается на нулевом баре текущего символа
flag=false;
break;
}
}
if(!flag) return(0);
//-----------------------------------------------
MA_H0=iMA(0,0,3,0,MODE_SMA,PRICE_HIGH,0);
MA_H1=iMA(0,0,3,0,MODE_SMA,PRICE_HIGH,1);
MA_0=iMA(0,0,3,0,MODE_EMA,PRICE_MEDIAN,0);
MA_1=iMA(0,0,3,0,MODE_EMA,PRICE_MEDIAN,1);
MA_L0=iMA(0,0,3,0,MODE_SMA,PRICE_LOW,0);
MA_L1=iMA(0,0,3,0,MODE_SMA,PRICE_LOW,1);
HA_up=iCustom(0,0,"Heiken Ashi",3,0);
HA_dw=iCustom(0,0,"Heiken Ashi",2,0);
//задали все данные
total=OrdersTotal();
if(total<1)
{
// Проверка свободной маржиif(AccountFreeMargin()<(1000*Lots))
{
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
// Условие открытие позиции BUYif(MA_L1<MA_L0&&Ask<=MA_L0&&MA_0>MA_1&&HA_up>HA_dw)
{
Lots=GetSizeLot();
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,5,Bid-Sploss*Point,0,"",16384,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
}
elsePrint("Error opening BUY order : ",GetLastError());
return(0);
}
// Условие открытие позиции SELLif(MA_H1>MA_H0&&Bid>=MA_H0&&MA_0<MA_1&&HA_up<HA_dw)
{
Lots=GetSizeLot();
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,5,Ask+Sploss*Point,0,"",16384,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
}
elsePrint("Error opening SELL order : ",GetLastError());
return(0);
}
return(0);
}
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL &&
OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY) // длинная позиция открыта
{
if(NormalizeDouble (MathAbs(MA_H0-Bid),Digits)<Point)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
return(0);
}
// трейлинг-стоп для длинной позицииif(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
else
{
if(NormalizeDouble (MathAbs(MA_L0-Ask),Digits)<Point)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
return(0);
}
// трейлинг-стоп для короткой позицииif(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
}
return(0);
}
Вопрос: позиция на текущей свече не закрылась (условия не наступили), как сделать чтобы сразу на следующей свече она закрылась при совпадении с MA_0= iMA ( 0, 0, 3, 0, MODE_EMA, PRICE_MEDIAN, 0 );
Есть условие закрытие : пересечение максимума либо минимума на текущей свече, но нужно еще чтобы на следующей свече после открытия позиции позиция могла закрыться.
можно прописать if ( NormalizeDouble ( MathAbs (MA_0-Ask), Digits )< Point ), но как соблюсти условие второй открытой свечи.
TarasBY: Есть категория людей, которые не умеют слушать, таким помочь почти не возможно.
Добрый день. помогите пожалуста мене нужно чтобы при переменной сиг=1 переменая pol запомнила баланс и не менять его значение независимо сколько он будет показывать дальше а чтоб если опять сиг равно 1 запомнить текущий подскажите код пожалуста
согласен
умничать все умеют
извините.. дело в том что я 2 дня боюсь над задачей..
Всем Здравствуйте. Я новичек в трейдинге, сижу на демо с советниками, но вот хочу начать реал с 45 долларов. Советников пока тестирую, поэтому хочу пользоваться сигналами. Пользуюсь МТ4. Я подобрал список из которого прошу помочь мне выбрать лучший сигнал. Вот список:
https://www.mql5.com/ru/signals/10276
https://www.mql5.com/ru/signals/11021
https://www.mql5.com/ru/signals/6283
https://www.mql5.com/ru/signals/10964
https://www.mql5.com/ru/signals/9649
Добрый день. помогите пожалуста мене нужно чтобы при переменной сиг=1 переменая pol запомнила баланс и не менять его значение независимо сколько он будет показывать дальше а чтоб если опять сиг равно 1 запомнить текущий подскажите код пожалуста
если баланс поменяется пол будет равен новому балансу
это сразу видно если сделать так
pol=AccountBalance();
Составил советник для тестирования торговли, но ни как не могу докумекать до одной вещи...
открытие Bay/sell происходит по максимальным и минимальным МА
// Условие открытие позиции BUY
if(MA_L1<MA_L0&&Ask<=MA_L0&&MA_0>MA_1&&HA_up>HA_dw)
// Условие открытие позиции SELL
if(MA_H1>MA_H0&&Bid>=MA_H0&&MA_0<MA_1&&HA_up<HA_dw)
Вопрос: позиция на текущей свече не закрылась (условия не наступили), как сделать чтобы сразу на следующей свече она закрылась при совпадении с MA_0= iMA ( 0, 0, 3, 0, MODE_EMA, PRICE_MEDIAN, 0 );
Есть условие закрытие : пересечение максимума либо минимума на текущей свече, но нужно еще чтобы на следующей свече после открытия позиции позиция могла закрыться.
можно прописать if ( NormalizeDouble ( MathAbs (MA_0-Ask), Digits )< Point ), но как соблюсти условие второй открытой свечи.
Если можно ответьте с кодом, с примером понятнее.
если баланс поменяется пол будет равен новому балансу
это сразу видно если сделать так
pol=AccountBalance();
Этим кодом ничего не проверить. И переменная pol должна быть объявлена глобально, как впрочем, и переменная сиг.
нуу.. как это сделать... сомент ведь показывает текущее значение переменной пол
сначала пол каки полагается показывает первоначальный баланс
я открываю ордер и у меня баланс равен первоначальному но если я закрою в профите или наоборот баланс меняется
а мне надо чтобы пол стал новым балансом при определенных условиях а пока условия не наступили пол равен первоначальному балансу
Для кода MQL4 используйте SRC, и все смогут разобраться и помочь Вам!
спасибо буду знать.
нуу.. как это сделать... сомент ведь показывает текущее значение переменной пол
сначала пол каки полагается показывает первоначальный баланс
я открываю ордер и у меня баланс равен первоначальному но если я закрою в профите или наоборот баланс меняется
а мне надо чтобы пол стал новым балансом при определенных условиях а пока условия не наступили пол равен первоначальному балансу
Есть категория людей, которые не умеют слушать, таким помочь почти не возможно.
Добрый день. помогите пожалуста мене нужно чтобы при переменной сиг=1 переменая pol запомнила баланс и не менять его значение независимо сколько он будет показывать дальше а чтоб если опять сиг равно 1 запомнить текущий подскажите код пожалуста
согласен
умничать все умеют
извините.. дело в том что я 2 дня боюсь над задачей..
я бы не обратился за помощью