[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 673

 
artmedia70 :
저것들. 어드바이저의 init()에서 표시기 창에 정보를 표시하는 함수에 대한 호출을 추가해야 합니까?


글쎄, init()에서 작성하려고

정수 초기화()
{
Alert ("init() 섹션에서 호출되었음에도 불구하고 나는 당신의 창을 찾을 수 없습니다. 나는 여기서 나가고 있습니다.");
반환(0);
}

 
IgorM :


글쎄, init()에서 작성하려고

정수 초기화()
{
Alert("당신의 창을 찾을 수 없지만 init() 섹션에서 호출되었지만 여기에서 나왔습니다.");
리턴(0);
}

:) 당신은 표절을 거래합니까? :)
 

문제를 처리하는 데 도움이! 내 거래가 수익성이 없으면 로트를 변경해야 합니다. 그렇지 않으면 아니오입니다. 나는 그렇게 ......

 //================================================= ===
// Расчет размера позиции
//================================================== ==
double CalculateLots(){
   double Res=dLots;
   bool bProfit= true ;
   int PrevTime=- 1 ;
   double tmpLots;
   for ( int i= 0 ;i<OrdersHistoryTotal();i++){
       if (!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue ;
       if (OrderSymbol()!=Symbol())                     continue ;
       if (OrderMagicNumber()!=MAGIC)                   continue ;
       if (OrderCloseTime()<PrevTime)                   continue ;
      PrevTime=OrderCloseTime();
       if (OrderProfit()> 0 ) bProfit= true ; else bProfit= false ;
      tmpLots=OrderLots();
   }
   double Lots_Step=MarketInfo(Symbol(), MODE_LOTSTEP);
   if (!bProfit) Res=tmpLots+Lots_Step;
   return (Res);
}

돕다! 사실은 로트를 변경할 때 이미 보류 중인 주문이 있다는 것입니다(다른 로트와 함께). 이 주문을 삭제하고 그 안의 로트 수를 (새 주문으로) 변경해야 하지만 매개변수는 그대로 유지됩니다!


 


친애하는 프로그래머 여러분,
다음 질문에 답해 주십시오.

문자열의 데이터가 배열에 올바르게 입력되지 않은 이유를 알려주십시오.

 extern string Sessions_begin= "15:31;14:11" ;
extern string Sessions_end= "22:32;18:12" ; 

int mas_time_begin[ 10 ][ 2 ], mas_time_end[ 10 ][ 2 ];  //первый - № сессии,
            // второй время[][1]-первый элемень время(часы), [][2]-минуты.

//
str_len_begin= StringLen (Sessions_begin)

Print ( "Длина str_len_begin=" +str_len_begin);
  for (n= 1 ,i= 0 ; i<=str_len_begin; i+= 6 ,n++)
  {
   mas_time_begin[n][ 1 ]=StrToInteger( StringSubstr (Sessions_begin,i, 2 ));
   mas_time_begin[n][ 2 ]=StrToInteger( StringSubstr (Sessions_begin,i+ 3 , 2 ));
   mas_time_end[n][ 1 ]=StrToInteger( StringSubstr (Sessions_end,i, 2 ));
   mas_time_end[n][ 2 ]=StrToInteger( StringSubstr (Sessions_end,i+ 3 , 2 ));
  Print ( "n= " +n);
  Print ( "i= " +i);

  Print ( "Начало сессии " +n+ " в(вывод через Print) " + StringSubstr (Sessions_begin,i, 2 )+ ":" + StringSubstr (Sessions_begin,i+ 3 , 2 )); 
  Print ( "Конец сессии " +n+ " в (вывод через Print) " + StringSubstr (Sessions_end,i, 2 )+ ":" + StringSubstr (Sessions_end,i+ 3 , 2 ));
  Print ( "Начало сессии " +n+ " в(вывод через Массив) " +mas_time_begin[n][ 1 ]+ ":" +mas_time_begin[n][ 2 ]);
  Print ( "Конец сессии " +n+ " в(вывод через Массив) " +mas_time_end[n][ 1 ]+ ":" +mas_time_end[n][ 2 ]);
  }

다음은 지금 일어나는 일입니다.

http://savepic.ru/1410881.gif

 

Господа, не подскажете ли? Есть проблема в сортировке ордеров при включении или (наложении) отремонтированного советника на имеющиеся уже, выставленные отложки. Я тут пытался соорудить коды для поиска, распознавания и переприсвоения имеющихся номеров ордеров, чтоб советник воспринимал их как свои, но результат какой-то неопределённый. Советник при включении начинает лупить некоторые отложки в тоже место с теми же параметрами.....Может у кого есть коды или мысли по этой теме, для многих ордеров?

응답해주신 분들께 감사드립니다.

 
Hedin :


친애하는 프로그래머,
다음 질문에 답해 주십시오.

문자열의 데이터가 배열에 올바르게 입력되지 않은 이유를 알려주십시오.

지금 일어나는 일은 다음과 같습니다.

http://savepic.ru/1410881.gif

두 번째 차원의 배열 크기가 올바르게 설정되지 않았습니다 .

 int mas_time_begin[ 10 ][ 2 ], mas_time_end[ 10 ][ 2 ];  //первый - № сессии,

배열 요소는 0에서 시작하고 다음 항목에 있습니다.

mas_time_begin[n] [ 2 ] =StrToInteger( StringSubstr (Sessions_begin,i+ 3 , 2 ));
mas_time_end[n] [ 2 ] =StrToInteger( StringSubstr (Sessions_end,i+ 3 , 2 ));
두 번째 차원이 2로 지정되었지만 세 번째 셀(0, 1, 2)에 데이터를 쓰고 싶습니다(인덱스 0, 1만 사용할 수 있음).

문제 해결: 두 번째 차원에서 배열을 늘리거나

 int mas_time_begin[ 10 ][ 3 ], mas_time_end[ 10 ][ 3 ];  //первый - № сессии,

값을 쓸 때 인덱스를 다시 쓰거나

mas_time_begin[n][ 0 ]=StrToInteger( StringSubstr (Sessions_begin,i, 2 ));
mas_time_begin[n][ 1 ]=StrToInteger( StringSubstr (Sessions_begin,i+ 3 , 2 ));
mas_time_end[n][ 0 ]=StrToInteger( StringSubstr (Sessions_end,i, 2 ));
mas_time_end[n][ 1 ]=StrToInteger( StringSubstr (Sessions_end,i+ 3 , 2 ));
 
rosomah :

주님, 말씀해 주시겠습니까? 기존 보류 중인 Expert Advisor에서 수리된 Expert Advisor를 켜거나(겹칠 때) 순서를 정렬하는 데 문제가 있습니다. 여기에서 고문이 자신의 것으로 인식할 수 있도록 기존 주문 번호를 검색, 인식 및 재할당하기 위한 코드를 작성하려고 시도했지만 결과는 어떻게 든 불확실합니다. Expert Advisor를 켜면 동일한 매개변수를 사용하여 같은 위치에서 보류 중인 일부를 벗겨내기 시작합니다. ..... 많은 주문에 대해 이 주제에 대한 코드나 생각이 있는 사람이 있습니까?

응답해주신 분들께 감사드립니다.

고문이 "올빼미 - 외계인"을 결정하는 방법에 따라, 매직 넘버에 의한 경우, 이 매개변수는 이미 배치된 주문에 대해 변경할 수 없기 때문에 이미 배치된 보류 중인 주문으로 수행할 일이 없습니다.
글로벌 변수 에 티켓을 저장하는 경우 이미 더 쉽고 기존 티켓의 티켓을 "데이터베이스에 추가"할 수 있습니다. 이것이 이 단계에서 당신을 위한 주요 질문입니다. 그는 어떻게 정의합니까?
 
ToLik_SRGV :

고문이 "올빼미 - 외계인"을 결정하는 방법에 따라, 매직 넘버에 의한 경우, 이 매개변수는 이미 배치된 주문에 대해 변경할 수 없기 때문에 이미 배치된 보류 중인 주문으로 수행할 일이 없습니다.

인 인과 다른 퇴적물의 격자 인 경우 구멍이 형성 되기 때문에 일부 지연 작동, 일부 이동 등 그들은 또한 "새로운" 고문에 의해 인식되고, 번호가 다시 매겨지고 사용 가능한 장소에 채워져야 합니다. 물론 수동으로 할 수 있지만 ... 무엇을 위해 MTS. 하나의 주문에 대해 최소한 N.Morzhov를 사용할 수 있습니다.

정수 검색;

if(검색==0)

{int k;

for(k=0; k<OrderTotal();k++)

{ if( OrderSelect (k,SELECT_BY_POS,MODE_TRADES)==false) break;

if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=Magic)cjntinue

ticket_buy1=OrderTicket();

검색=1; }}

하지만 주문 팩을 처리하는 방법?

 
mql5 튜토리얼이 언제 출시될지 누가 압니까?
 
Abzasc :
mql5 튜토리얼이 언제 출시될지 누가 압니까?

https://www.mql5.com/ru/forum/491