포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 461

 
wolfovik :

문제 해결을 도와주세요!

ICustom 기능을 사용할 때 테스터의 EA가 멈춥니다. 문제를 해결할 수 있는 방법이 있습니까?

그리고 테스터에는 항상 오류가 있습니다. PB Trade EURUSD,H1: OrderSend error 130

비록 300점 수준에서 멈췄지만!

ticket = OrderSend ( Symbol (), OP_BUY , 0.1 , Ask , 5 , Bid - 300 * Point , Bid + 300 * Point );

그렇게 작동하지도 않는다.

 RefreshRates ();
ticket = OrderSend ( Symbol (), OP_BUY , 0.1 , Ask , 5 , Bid - 300 * Point , Bid + 300 * Point );

어디에서 방향을 잘못 잡았습니까?


 
Dmitry01110 :
안녕하세요! FileOpen 함수로 생성된 파일을 편집하는 방법을 알려주세요. 예를 들어 현재 위치에서 바이트를 삭제하고 대신 다른 바이트를 삽입하는 방법을 알려주세요!


저도 비슷한 일을 하려고 합니다.

열이 하나만 있는 *.csv 파일이 있습니다. 그 안의 숫자는 서로 아래에 있습니다. 번호가 사용될 때마다 그 옆에 아이콘이 추가되어 이 번호가 이미 고문이 사용했음을 나타내도록 만들려고 합니다.

두 개의 열이 있는 *.csv 파일을 준비할 수 있습니다. - [NUMBER]; [ICON], 그리고 어드바이저 아이콘만 수정하겠습니다.

 
wolfovik :

그리고 테스터에는 항상 오류가 있습니다. PB Trade EURUSD,H1: OrderSend error 130

비록 300점 수준에서 멈췄지만!

그렇게 되지도 않는다.

내가 어디에서 방향을 잘못 잡았습니까?


거래 요청 에서 계산된 가격은 숫자로 정규화되어야 합니다.

ticket = OrderSend ( Symbol (), OP_BUY , 0.1 , Ask , 5 , NormalizeDouble ( Bid - 300 * Point , Digits ), NormalizeDouble ( Bid + 300 * Point , Digits ));

또한 StopLevel 요구 사항에 대한 허용 여부에 대한 중지 주문 값을 확인해야 합니다.

 input int   StopLoss    =   300 ;   // Значение Stop Loss в пунктах
input int   TakeProfit  =   300 ;   // Значение Take Profit в пунктах
int    level= 0 , spread= 0 ;
//+------------------------------------------------------------------+
//|   Старт                                                          |
//+------------------------------------------------------------------+
void OnTick () {
   level= MarketInfo ( Symbol (), MODE_STOPLEVEL );
   spread= MarketInfo ( Symbol (), MODE_SPREAD );
   if (level== 0 ) level=spread* 2 ;
//---
   int     ticket= 0 ;
   double sl= 0 , tp= 0 ;
   if (StopLoss> 0 ) sl= NormalizeDouble ( MathMin ( Bid -StopLoss* Point , Bid -(level+ 1 )* Point ), Digits );
   if (TakeProfit> 0 ) tp= NormalizeDouble ( MathMax ( Bid +TakeProfit* Point , Bid +(level+ 1 )* Point ), Digits );
   ticket = OrderSend ( Symbol (), OP_BUY , 0.1 , Ask , 5 ,sl,tp);
   return ;
}

이와 같은 것을 구매하기 위해 ...

 
Dmitry01110 :
안녕하세요! FileOpen 함수로 생성된 파일을 편집하는 방법을 알려주세요. 예를 들어 현재 위치에서 바이트를 삭제하고 대신 다른 바이트를 삽입하는 방법을 알려주세요!
파일의 전체 텍스트를 문자열 변수로 호출하고 단순 변수로 편집한 다음 쓰기 전용으로 이 파일을 호출하고 이 변수를 다시 반환합니다.
 
Roger :
파일의 전체 텍스트를 문자열 변수로 호출하고 단순 변수로 편집한 다음 쓰기 전용으로 이 파일을 호출하고 이 변수를 다시 반환합니다.

파일의 문자 수가 문자열 변수의 최대 문자 크기를 초과하면 어떻게 됩니까?
 
조금 알아 냈습니다! 파일의 특정 위치에 있는 값을 바꾸려면 FileSeek를 사용하여 이전 바이트에 대한 포인터를 넣은 다음 FileWriteInteger 를 사용하여 예를 들어 거기에 새 값을 쓰면 이전 값을 덮어씁니다. 가장 중요한 것은 이전 값과 새 값이 동일한 크기여야 한다는 것입니다(예: int의 경우 LONG_VALUE).
 
오늘 그들은 내 터미널을 업데이트했습니다. 이제 그는 지표를 볼 수 없습니다 ...해야 할 일과 올바르게 넣었는지 여부. 이전과 동일한 폴더(경로)에 있습니다.
 

for(int l = StringLen (tfs)-1; l >= 0; l--) { int char = StringGetChar(tfs,l); }

코드에 오류가 있습니다. 왜 "char"에 맹세합니까? 어떻게 그리고 무엇을 대체할 수 있습니까?

 
artmedia70 :
파일의 문자 수가 문자열 변수의 최대 문자 크기를 초과하면 어떻게 됩니까?

문자열 변수에는 제한이 없습니다. 오히려 존재하지만 매우 큽니다. 빌드 529의 MT4의 경우 2147483647 기호이고 MT4가 32비트 OS에 있는 경우 2배 적습니다. 항상 그런 것은 아닙니다. 다른 키와 PAE가 있습니다 ...

드미트리01110 :
조금 알아 냈습니다! 파일의 특정 위치에 있는 값을 바꾸려면 FileSeek를 사용하여 이전 바이트에 대한 포인터를 놓은 다음 예를 들어 FileWriteInteger를 사용하여 거기에 새 값을 쓰면 이전 값을 덮어씁니다. 가장 중요한 것은 이전 값과 새 값이 동일한 크기여야 한다는 것입니다(예: int의 경우 LONG_VALUE).
예, 하지만 CSV의 경우 문자 수가 일치해야 합니다.

졸로타이 :

for(int l = StringLen(tfs)-1; l >= 0; l--) { int nChar = StringGetChar(tfs,l); }

코드에 오류가 있습니다. 왜 "char"에 맹세합니까? 어떻게 그리고 무엇을 대체할 수 있습니까?

 
고마워