double MeansOneLot = MarketInfo (Symb,MODE_MARGINREQUIRED); //Необходимо средств для открытия 1 лотаdouble MeansFree = AccountFreeMargin (); //Значение свободных средств, разрешенных для открытия позицийdouble MeansGuaranty = AccountMargin (); //Значение залоговых средств, используемых для поддержания открытых позицийdouble LotPriceTic = MarketInfo (Symb, MODE_TICKVALUE); //Стоимость 1 лота в валюте депо на 1 тикdouble MaxLotPermissible = MathFloor ((MeansFree/MeansOneLot)* 100 )/ 100 ; //Максимально допустимый лот для открытия позиции
친구, 문제 해결을 도와주세요... TicketArray 배열에 티켓 번호(3개)가 기록되어 있습니다. 그리고 이제 나는 엘크를 3 번 연속으로 얻을 때 고문이 거래를 멈추기를 원합니다 ... 처음에는 엘크 3 마리의 조건을 쓸 수 없습니다 ... 친절한 뱀이 한때 나에게 깃발에 대한 지식을 주었다 a 오래 전, 지금은 널리 사용하지만 여전히 아무것도 나오지 않습니다. 손실의 첫 번째 주문을 닫은 후 EA가 true를 반환하고 제대로 작동합니다... 왜죠?
bool flag = true; //по умолчанию флаг стоит на правдуfor ( int j= 1 ;j< 4 ;j++) //цикл из 3х значений (1,2,3)
{
OrderSelect (TicketArray[j],SELECT_BY_TICKET); //выбираю ордерif ( OrderClosePrice ()!= OrderStopLoss () && TicketArray[j]== 0 )flag = false; //думаю, тут проблема. Условие: если ордер не получил лося 3 раза и если у тикета еще нет номера, то такая ситуация меня не устраивает.Print ( OrderClosePrice (), ",,,,," , OrderStopLoss (), ",,,,," ,TicketArray[j]); //эта строчка для тестера, чтоб наглядно было видно цену закрытия, цену стопа и номер тикета. Хоть тикет и =0, но все равно пишет true.
}
Alert (flag);
만일을 대비하여 전체 고문을 게시합니다. 이것은 내가 교육 목적으로 직접 쓴 일반 마틴게일입니다.
//+------------------------------------------------------------------+//| StMartin.mq4 |//| Sergey Kodolov |//| 84232676421@mail.ru |//+------------------------------------------------------------------+#property copyright "Sergey Kodolov"#property link "84232676421@mail.ru"externint TP = 1000 ;
externint TS = 1000 ;
externint TF = 1 ;
externdouble lots = 0.1 ;
double volumz;
int ticket,total;
int slip = 3 ;
int Magic = 4 ;
int TicketArray[ 4 ];
void FormTicket( int number) //объявил шаблон под функцию запоминания тикетов
{
for ( int i= 3 ;i> 0 ;i--)
{
TicketArray[ 0 ] = ticket;
if (TicketArray[ 0 ]> 0 && TicketArray[ 0 ] == TicketArray[ 1 ]) break ;
TicketArray[i] = TicketArray[i- 1 ];
}
}
//+------------------------------------------------------------------+//| expert initialization function |//+------------------------------------------------------------------+int init()
{
//----
ticket = OrderSend ( Symbol (),OP_BUY,lots,Ask,slip,Bid-TS* Point ,Bid+TP* Point , "First order" ,Magic, 0 , Yellow ); //открываем первый ордер//----return ( 0 );
}
//+------------------------------------------------------------------+//| expert deinitialization function |//+------------------------------------------------------------------+int deinit()
{
//----//----return ( 0 );
}
//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start()
{
//----int OrderTimeCheck = check3(); //проверяем, закрыт ли ордерbool OrderCloseCheck = check2(OrderTimeCheck); //проверяем, закрылись ли ордера в минус
FormTicket(ticket); //вызываем функцию, чтоб запоминала тикеты
ProfitCheck(OrderCloseCheck); //тут рисуем линии
total = OrdersTotal ();
if (total < 1 )
{
OrderSelect (TicketArray[ 1 ],SELECT_BY_TICKET);
volumz = OrderLots ();
if ( OrderProfit ()<= 0 )
{
if ( OrderType () == OP_BUY)
{
double lot1 = volumz* 2 ;
ticket = OrderSend ( Symbol (),OP_SELL,lot1,Bid,slip,Ask+TS* Point ,Ask-TP* Point , 0 ,Magic, 0 , Green );
}
if ( OrderType () == OP_SELL)
{
double lot2 = volumz* 2 ;
ticket = OrderSend ( Symbol (),OP_BUY,lot2,Ask,slip,Bid-TS* Point ,Bid+TP* Point , 0 ,Magic, 0 , Red );
}
}
if ( OrderProfit ()> 0 )
{
if ( OrderType () == OP_BUY)
{
ticket = OrderSend ( Symbol (),OP_BUY,lots,Ask,slip,Bid-TS* Point ,Bid+TP* Point , 0 ,Magic, 0 , Green );
}
if ( OrderType () == OP_SELL)
{
ticket = OrderSend ( Symbol (),OP_SELL,lots,Bid,slip,Ask+TS* Point ,Ask-TP* Point , 0 ,Magic, 0 , Red );
}
}
}
//----return ( 0 );
}
//+------------------------------------------------------------------+int check3() //проверяем, закрыт ли ордер
{
OrderSelect (TicketArray[ 1 ],SELECT_BY_TICKET);
if ( OrderCloseTime ()> 0 ) return ( 100 );
}
bool check2( int OrderTimeCheck) //проверяем, если ордер закрыт, то последние 3 закрытых ордера были ли убыточными?
{
if (OrderTimeCheck == 100 )
{
bool flag = true;
for ( int j= 1 ;j< 4 ;j++)
{
OrderSelect (TicketArray[j],SELECT_BY_TICKET);
if ( OrderClosePrice ()!= OrderStopLoss () && TicketArray[j]== 0 )flag = false; //ТУТ ДОДУМАТЬ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Print ( OrderClosePrice (), ",,,,," , OrderStopLoss (), ",,,,," ,TicketArray[j]);
}
Alert (flag);
if (flag == true)
{
ObjectCreate ( "NewLabel" , OBJ_LABEL , 0 , 0 , 0 );
ObjectSetText ( "NewLabel" , "Ура" , 14 , "Arial" , Aqua );
ObjectSet ( "NewLabel" , OBJPROP_CORNER , 1 );
ObjectSet ( "NewLabel" , OBJPROP_XDISTANCE , 40 );
ObjectSet ( "NewLabel" , OBJPROP_YDISTANCE , 40 );
}
}
}
void ProfitCheck( bool OrderCloseCheck)
{
if (OrderCloseCheck == true)
{
Print ( "x" );
}
}
PerkyAsctrend1 표시기의 버퍼 중 하나를 읽을 수 없습니다. 이해를 도와주세요. 나는 항상 문제없이 다른 지표로 여러 번 수행했습니다. 그것은 바로 여기에서 작동하지 않습니다. 두 개의 버퍼를 읽었습니다. 그 중 하나는 다음과 같습니다. 이중 PerkyBuf2=iCustom(NULL,0," PerkyAsctrend1 ",5,250,0,1); - 올바르게 읽히고 신호가 잡혔습니다. 다음 줄에서 신호를 잡으려고 합니다. 이중 PerkyBuf1=iCustom(NULL,0," PerkyAsctrend1 ",5,250,1,1); 이 버퍼의 모든 신호는 내 Expert Advisor를 통과합니다. 이 2가지 포인트로 빈 Expert Advisor를 만들어보기도 했는데, Comment() 는 화면에 결과를 보여주었다. 매도 신호가 잡히지 않습니다. 이해하도록 도와주세요. 인디케이터를 동봉
PerkyAsctrend1 표시기의 버퍼 중 하나를 읽을 수 없습니다. 이해를 도와주세요. 나는 항상 문제없이 다른 지표로 여러 번 수행했습니다. 여기에서는 작동하지 않습니다. 두 개의 버퍼를 읽었습니다. 그 중 하나는 다음과 같습니다. 이중 PerkyBuf2=iCustom(NULL,0," PerkyAsctrend1 ",5,250,0,1); - 올바르게 읽히고 신호가 잡혔습니다. 다음 줄에서 신호를 잡으려고 합니다. 이중 PerkyBuf1=iCustom(NULL,0," PerkyAsctrend1 ",5,250,1,1); 이 버퍼의 모든 신호는 내 Expert Advisor를 통과합니다. 이 2가지 포인트로 빈 Expert Advisor를 만들어보기도 했는데, Comment()는 화면에 결과를 보여주었다. 매도 신호가 포착되지 않습니다. 이해하도록 도와주세요. 인디케이터를 동봉
POINT와 TICKSIZE의 차이점은 무엇입니까? MarketInfo()를 통해 요청하면 동일하지만 다르게 호출되면 어떻게 달라야 합니까?
POINT와 TICKSIZE의 차이점은 무엇입니까? MarketInfo()를 통해 요청하면 동일하지만 다르게 호출되면 어떻게 달라야 합니까?
악기마다 다른 경우가 있습니다
악기마다 다른 경우가 있습니다
파일을 텍스트에 첨부하는 데 도움이 됩니다.
만일을 대비하여 전체 고문을 게시합니다. 이것은 내가 교육 목적으로 직접 쓴 일반 마틴게일입니다.
PerkyAsctrend1 표시기의 버퍼 중 하나를 읽을 수 없습니다.
이해를 도와주세요. 나는 항상 문제없이 다른 지표로 여러 번 수행했습니다. 그것은 바로 여기에서 작동하지 않습니다.
두 개의 버퍼를 읽었습니다. 그 중 하나는 다음과 같습니다.
이중 PerkyBuf2=iCustom(NULL,0," PerkyAsctrend1 ",5,250,0,1); - 올바르게 읽히고 신호가 잡혔습니다. 다음 줄에서 신호를 잡으려고 합니다.
이중 PerkyBuf1=iCustom(NULL,0," PerkyAsctrend1 ",5,250,1,1); 이 버퍼의 모든 신호는 내 Expert Advisor를 통과합니다. 이 2가지 포인트로 빈 Expert Advisor를 만들어보기도 했는데, Comment() 는 화면에 결과를 보여주었다. 매도 신호가 잡히지 않습니다.
이해하도록 도와주세요.
인디케이터를 동봉
PerkyAsctrend1 표시기의 버퍼 중 하나를 읽을 수 없습니다.
이해를 도와주세요. 나는 항상 문제없이 다른 지표로 여러 번 수행했습니다. 여기에서는 작동하지 않습니다.
두 개의 버퍼를 읽었습니다. 그 중 하나는 다음과 같습니다.
이중 PerkyBuf2=iCustom(NULL,0," PerkyAsctrend1 ",5,250,0,1); - 올바르게 읽히고 신호가 잡혔습니다. 다음 줄에서 신호를 잡으려고 합니다.
이중 PerkyBuf1=iCustom(NULL,0," PerkyAsctrend1 ",5,250,1,1); 이 버퍼의 모든 신호는 내 Expert Advisor를 통과합니다. 이 2가지 포인트로 빈 Expert Advisor를 만들어보기도 했는데, Comment()는 화면에 결과를 보여주었다. 매도 신호가 포착되지 않습니다.
이해하도록 도와주세요.
인디케이터를 동봉
버퍼 0의 매수 신호, 버퍼 1의 매도 신호
확인할 스크립트: