//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает количество секунд после открытия последней позиций. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+datetime SecondsAfterOpenLastPos( string sy= "" , int op=- 1 , int mn=- 1 ) {
datetime t;
int i, k= OrdersTotal ();
if (sy== "0" ) sy= Symbol ();
for (i= 0 ; i<k; i++) {
if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy== "" ) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op< 0 || OrderType()==op) {
if (mn< 0 || OrderMagicNumber()==mn) {
if (t<OrderOpenTime()) t=OrderOpenTime();
}
}
}
}
}
}
return ( TimeCurrent ()-t);
}
다음과 같이 확인합니다(굵게 강조 표시됨, 주의를 기울이지 마십시오. / * PauseMain * / - 이것은 분 단위의 임의 지연 값입니다 - 5에서 9까지).
// Тут начало функции открытия позиций (открытие Buy)....
// Ниже код открытия Sell:
PauseMain51=random( 5 , 9 )*60;
if (!Lot()) return ;// Средств не хватает на миним.- выходимif (!OpnSell51 || !Trade) return ;
if (ExistPositions( NULL , OP_SELL, 51 , 0 )) // Если есть такой же открытый Sell
{
if (SecondsAfterOpenLastPos( NULL , OP_SELL, 51 )<=/*PauseMain51*/ 7 * 60 ) return ; (7*60 сек = 7 минут)
// Если прошло мало времени - валим
}
//---------------------- Позиции ещё нету - открываемся...-----------------------------
divider= 1 ;
Lots=GetSizeLot();
Magic= 51 ; // Задаём магик... 5 и 1; 5 = пять минут, 1 = стратегия 1
New_Comm= "Sell_M5_Стратегия_1_Основная позиция" ; // Задаём комментарий для позиции
Lots_New=NormalizeLot(Lots/divider, False, NULL );
OpenPosition( NULL ,OP_SELL,Lots_New, 0 ,pb-tp*po,Magic,New_Comm);
return ;
이러한 질문-전략 테스터에서 비시각적 모드에서 그래픽 개체가 모델링되지 않는 것으로 나타났습니까? 예를 들어, OBJ_REGRESSION 채널이 깨졌을 때 거래를 여는 코드를 테스트했습니다. 이 채널을 끄면 시각적 모드에서 거래됩니다. 거래가 없습니다... 이 경우 최적화하는 방법은 무엇입니까?
SetIndexStyle(0, DRAW_NONE); SetIndexStyle(1,DRAW_LINE,EMPTY); SetIndexStyle(2, DRAW_NONE); SetIndexStyle(3, DRAW_NONE); SetIndexStyle(4, DRAW_NONE); 여기는 내꺼야........ 칠면조에 선 굵기가 0이고 매번 설정으로 고생하지 않도록 굵기를 2로 설정하고 싶은데...... 나는 이것을 하는 방법을 모른다 .... 나는 프로그래머가 아니다 .... 좋은 사람들을 도우라))))
나는 프로그래밍을 전혀 이해하지 못한다. CCI 필터(https://www.forex-tsd.com/indicators-metatrader-4/3356-cci-filter.html)에서 동일한 작업을 수행하고 싶었습니다. WPR의 경우에만 코드의 모든 곳에서 CCI를 WPR로 교체했습니다. , 그리고 막대 색상 측면에서 레벨이 변경되었습니다(CCI의 경우 -100, 0, 100이 아니라 -60, -50 및 -40, MT WPR에서 -100에서 0 사이의 범위가 있는 것으로 보이므로 맞습니까?) ?). 그러나 어떤 이유로 오류와 함께 컴파일되고 화면에 칠면조가 한 가지 색상으로 나옵니다. 뭐가 문제 야? 미리 감사합니다
정적 정수 시간 = 시간[0];
if (시간 < 시간[0]){
// 오래된 촛불
} 또 다른 {
// 새 촛불
시간 = 시간[0];
}
이제 이전보다 2배 적은 거래가 있습니다.
새 막대를 확인하는 대신 초 단위로 설정하여 시작 사이에 일시 중지합니다.
다음과 같이 확인합니다(굵게 강조 표시됨, 주의를 기울이지 마십시오. / * PauseMain * / - 이것은 분 단위의 임의 지연 값입니다 - 5에서 9까지).
맑아지길 바라며...
코드를 약간 수정한 Boris는 원래 로트로 돌아갈 때 어레이 위치 재설정을 추가하는 것을 잊었습니다.
매우 감사합니다! 모든 것이 해결되었습니다. 잘 어울리고 적당량을 넣어줍니다!!!
히스토그램 막대의 두께를 설정하기 위해 무엇을 수행하고 변경해야 하는지 또는 코드에 무엇을 추가해야 하는지 알려주세요 ??
표시기 설정 에서 - 선 종류, 색상 및 두께/너비
표시기 설정에서 - 선 종류, 색상 및 두께/너비
SetIndexStyle(1,DRAW_LINE,EMPTY);
SetIndexStyle(2, DRAW_NONE);
SetIndexStyle(3, DRAW_NONE);
SetIndexStyle(4, DRAW_NONE);
여기는 내꺼야........ 칠면조에 선 굵기가 0이고 매번 설정으로 고생하지 않도록 굵기를 2로 설정하고 싶은데...... 나는 이것을 하는 방법을 모른다 .... 나는 프로그래머가 아니다 .... 좋은 사람들을 도우라))))
나는 프로그래밍을 전혀 이해하지 못한다. CCI 필터(https://www.forex-tsd.com/indicators-metatrader-4/3356-cci-filter.html)에서 동일한 작업을 수행하고 싶었습니다. WPR의 경우에만 코드의 모든 곳에서 CCI를 WPR로 교체했습니다. , 그리고 막대 색상 측면에서 레벨이 변경되었습니다(CCI의 경우 -100, 0, 100이 아니라 -60, -50 및 -40, MT WPR에서 -100에서 0 사이의 범위가 있는 것으로 보이므로 맞습니까?) ?). 그러나 어떤 이유로 오류와 함께 컴파일되고 화면에 칠면조가 한 가지 색상으로 나옵니다. 뭐가 문제 야? 미리 감사합니다
지옥의 기억)
어떤 화폐인지 알고싶어서 변수를 등록했습니다
문자열 EUR = "EURUSD";
문자열 GBP="GBPUSD";
문자열 기호 = "";
처음에는 다음을 씁니다.
기호 = 기호(); // 주어진 심볼의 값을 얻는다
받은 symbl 값을 내 변수 값과 비교하고 싶습니다. 일치하면 이에 따라 결정을 내립니다.
스위치(기호) {
케이스 ........... 그리고 아무것도 나오지 않습니다 (( break;
케이스 ........... 깨다;
}
기억을 새로 고침))
기호 상수만 사용할 수 있다는 사실에 사로잡혔지만 어떻게 해야 할까요?
지옥의 기억)
어떤 화폐인지 알고싶어서 변수를 등록했습니다
문자열 EUR = "EURUSD";
문자열 GBP="GBPUSD";
문자열 기호 = "";
처음에는 다음을 씁니다.
기호 = 기호(); // 주어진 심볼의 값을 얻는다
받은 symbl 값을 내 변수 값과 비교하고 싶습니다. 일치하면 이에 따라 결정을 내립니다.
스위치(기호) {
케이스 ........... 그리고 아무것도 나오지 않습니다 (( break;
케이스 ........... 깨다;
}
기억을 새로 고침))