增加交易策略、交易指标、量化库代码等文件夹

This commit is contained in:
Win_home committed 2025-04-27 15:54:09 +08:00
1 parent ca3b209096
commit f57150dae8
589 files changed
+854346 -1757

No files matched your search

@@ -0,0 +1 @@
eyJ2ZXJzaW9uIjoiMS4wLjAuMiIsImF1dGhvciI6IiIsImF1dGhlbm5hbWUiOiJ2aXAxMCIsImRlc2MiOiIiLCJkYXRhIjoidkkrbXNwbjRMa1VFbnoxUlNoYSthSStsREpXK2JGS2VtM2hOYnJ5NDhpQy96dFhxNlBGOE1VYXo2djNsUXpQeU1hVVQ5MGkySFJ3aUdHWVY4cDduN1FWUGc1ZGdmeTgxbm4raEpUczFnMVE4a0xFUytMTUNCNkhFWnJGQkFkV1Vwanlid2QxWXZGb3puRXVzRU42bUxpMlk2REp3V25OcTFYYmlMd1loZThPK3l2UE9KRDd3OEtOUzVxMURpY01WZ1kxZVBTblhYSU9iZGViano1NUZ6NG0rZFlHbzhoZk9wUEgyQ0V0UldkWkhjRlo1RG5Ud1MrazJiSzYva2NJVS9ETkhNTHJ2YUp2OHY3KzE2QStXS0ZOeE1jYitDZnUvUHBPZnRTZG9NSm9SZFBlbElsUXZQWUpEajhlcnNlVDc3dmZVVkpudDQ1bUF3VlZsUVRRNjZjNE16eUo3dlVZT1JhaW1PODJRZ1B4bU1JYTdZSzl3Ukt1S016K0MvaVZ6NFBNalNZU0VWQmVOcWc5MnlEM2FsMDZhdFNGNUZhMlIySHZrV2lnYUZLcmhEZ1dmYlU4MnR5cEFCaGhXVjN5czZkSGQyN2lWa05HdWY1NENKMk1kLzdPRmNpcEhvV1pCNVR0US9kbzNnc096aFhJcVI2Rm1RUlpmVDN6cXo3VXhBVjRraG9XTGhQNTJiWGFSZXRrLzhHU1pwY2VCajNZbjc3cnZzNiszMGQ1Q01GczJ4VjhzMHJQcWVCWFJaMnZWTm15ZGpCeGN0R3h1UXVsKzNEQkpsRkFINkpUeW5pWTNqWTh6MmZZVk9IVHRGYmx0MlVqOHVhMTk4ZWlFRFE2TUxCZUE3NVZqWHFlRlQ3T01ZRGRSQnpUaitZOVR3L3pUNDJrUVgyOUQ4ZVI1VXo3UFZWc1M1MEtrQ2t4WHlCcG96SDVsTTdsOTRBWFl6UWRRTm1LS0FBd05Iamk5OXY4cmVQR1BTSjRmb1UvdGl2WjNxNTNZcmFsVkxRRWRSTWFCQWFLZ3B5bGNGamo3eVRKTG9GSk16MjVtUnVnVERacEhxdzA2aFdnQlhJN2VFeklPYjQ5ZlYxOWxuaUZ0eEdBeUs5NmhSdnRySndsa3BmZm9FT21XVXdBcGxuNmtlbW5VbGpzYjZ5MnBNSS8rSmhOdXQ5VmpnOWxQQWM0UnJkbklIaVBDNmFpUVpzYStIUC85ejRPMldUK3FjRW8vNGpRdXNhd21KaERaM2U4dDNNL1liaGN0Qk9PcnloR0hhTkJiWTAxNkx6NXBqU2xod1QwUVFSaGV1S2ZEZ3NuY3laQ203NXZIaDBrVkxwQzZaaC83ZU4xMlJFVTdmazFuZVdYbEtleG43SnJXVWNSbVFNTjNINGFoUDQ1Wkl2YXNKL0d3NnNyY2JPRlBuK1FXbU1DbE4wNXNndnZZNTZCZzJsV0JRZEpkYmFvZVdJaGxKWmtUdjIyRG9UaytEREJZVTZmUjA4RVUwSGpTYXB3aHYwMDJQcVljZWxnNDNDcVBFUWg5ai82Sks5SUdzNDZnVkFraTBaMFd4MjBHSURmMDRxVTFaTEZUamdNQ2FXeUdLV2dqZ2tVY3Fvam1vWEJBWWtLZENhZTZRZlZRWUZaTFE0OXM1QStnUFgzZThkVCtEZHl2Vm51QWU4MEVJb2hYU2I2VmxrNnhRS3dxV1ZFeUpnWDlSL3FIUEZDQjVrTGpJR3BWN0o5UzlEeXpyTzVlcG1PTXAzWGtrem1YbTdmK3RPa0xuMUNBanV6U3REWUVyTitQd0tOazBpNFJwQ2RQMTdVQUdvbC91WHlydW5RYldzWlZ5bzlsZnI3RFl0ckxJUVcwaTlzWEVSNDYvRG1TbGJEaHRVZ3ZwK3NpanN4amd2aTQrK3pJdFR3ZmxhdTRoREVLVHNhcDhhaUsyQ3drZUVTZUgxc3JMRWdFQ1RBVThHN002S3JQVUVmZGMyMlRMeU14Rm9RMzRhWFRHcUU1RU93N28xNmp2Rk9vOGYrUTkzVHdCa1FBREI1Q3lEd0dsOW4xa2NWWmMxZUkvZ2Q1d2x2TlRZZWlpWmI4LzhROFZIcXE0b1ZDVXpiWDdaWGF1NENPOERIS1BHeStETFNzYnZlVG90bWRwZFRWTk5SczZVazBPd3Q1Yi9sV2J4RXFmUGJKQStQam1ic2FDeWl4NGNuZ0J3NGJzOURyMmhVMDNyck1PRnR1K1JRUThoVEVTeERsSzN5UUhOUms0UmU4dlhJVkZqZHd0b2JPOUw4TFVYMXUxT2NJYWRlTFJVSkIyWnowWndpKzkyV1FwMmlOaGplQmRTWEFnbkR4SkV2eXliK2FmTFAwMldxMmdKTnlJbFRadTRXTFNYdlc0R1NsOXNQZC95dGdUdzJTdmVndlpuQ2xibjNSOEsxM21XM0I5U20wUCtLV1R1NXBsU1VNbFMzaDRzRjJRVDVSenkvTmo5UUZoNGpqcEhZajEwbHRrQ2dUQWpKT0RFb1l1VTQ5V2RuT2FSSnJIWDZLOHh3YzYrL1FEWWhaYm1MZzBoalpMOFBZQ1pBZnBsRWo4K0RkK0FmTFptdkdvS2wwUHNuQ1JRMUc4NTVSUHdMSnBESTl2QzlQZ3NQSmNoMGN2dzNyUWJZaFFsN0ppZ2doMjlnczMwR2xxL05nbzBRMDRwaHQ3Z2JNSGMwUWlrN2F2R0FZUTAvUkpNYWNDY2h3OTgrRVhiMzQ5RW5lMFhGUHZveU11M1dXY1VNNnFoeUtHekxuelI1MHdsQ2N0OWFVaGRKVmdGNkRHR1VRWGNDY2c3bi9lNDF5WE1SdkdhQzBZK3V1Uktzb2dOdHNRcnZMcFUzM0dTMDFxNitlbUpDL3NNM01ySnUxckpmZzJiU0h0dG5WTzJKZFQrYVVYNHRnVUFOdG1TRTFReFo0RTlhaTBnbUtNTjhqam5TMjBrYld2ZmFEbmY0WXkzNFRwUUhmbzdnakdsNzkvWW0zOGlMWHByWHRLVTJMZk9mczhyMGNlM1VPeGYram1OcENLMXBSK0VuRFA1R1laYnppSFozOStJcFRNRGlIeDcvekR1aGZqYVBNRVU4TENNcUtjSlBtSjRwazRUOUkwZUxiemk3WitLNlYwMlRJS3NpSlQwQnh3cE5JczJUQisyTHFEQktjbm13Vk84dEs2K1UvbW54bm00cTNOMVNJRjVKN25oSDRFSmcvZi9BOWZ5Mk5DVlFZTUoxK0lHSXR4Z2gwNitUYTI5S3R6VHo1UXVHMFVMdUxVNitZYXhiUHZxMGpuYXZZY09ndDRXRzNwZEFLRzZPdVo2TGROZTBmdGMwV2sraUxlRVZKckNNU25MRGs1a0s1OWJJQ28vbHdlK0RXS1lUcHJXU3pFdFdvckxONStnS0MzbVlub3pjQnJKdXBxU2JodGJycnVVY0xLRTdDOGM1d2JJYi8yT0JjaEN2c1lkZ0VpNmZrZFlnTk5yWE80UHlhSWhzRTl6R1g2YVFGNlRiUlM2MS96dkxGeGFZWEF1UjJRTnZaQmtENm12YTdBOXlqZ212eFVjbXA3QURUdVlOU2lYaW8xT3R6eU1CRnZPZUZLZ0tKalZtWkp1UHV1bWdnZjA2N1RBdlVsZENVYkJtNlV6Y0JucmFGUUlHekN2SUd1eGNqdStCbnFNOEtIeXhSSzJZeGxQNGtDclA0clNPN2JweVFxTXZhKzBuV09HU1RDM2VWY1dXc3B0KzhBaUF1b2lDRjZseEVvU0did0NzVFF3RmJ6ajEwNXRRS1RBMyt6WkZhMGwxYlBMU25kM0NyYU1ta3R3ajY5aVFuNkZQMmFPUXh3akRZNW1lRWc5OE5XMGVXWkR5WDUxelorZit0Y3ZBTTlhc1c4eWowYUE0RFVDbWJPQ2t5YkhiSGx4ZU5aZUY2MHZyWFg0blhaUGsySGhwWWFRRG94bzlsWDJPZ1pHTDE3bDNVNXZWRHR0NVV1SXFQZGJxbWZrakRMNWRXRFlJTlliRFJBM0VPUWl0NFZiOWRnc1dicE1DOXR4bWZ3bk50TUtjMHdLd1YzUitmUmlWYkN0MXZYdFYrcndoNFQ4VVNHY0tmaGxuZWxqNDBmSWhNVisrcDRxR01hM3FZdlZPQnR3K1hyV1lKVkEwU1FqTXg1WVkyZThJNWNSR0RNYXJSQy9HaEVSQk81UUIvQWR6RFArakg3MlBvK3c4UVhVQ3hoSk9TdmZlOUVYY1Y5WVFPU3IvT3dhQ0xpcFExb2lBQ0s3b3JkQ0hNbHlZd0t1MUtNcFpaOFFROE1ITEM4dWZ6SlQ3NWVPa3RoUWp2Y2IyUEx3d3RPSGJnMHFzWDE5MGlWdmZ3bzVZK3B2OGFCWVR4YVUvSitJc2xxTXUrNk5XTW11WmdpYnVNUHZ2aXpodGhLTlc4MkJBTWo1QW5pOUtMbGd5VUg2bEFmLzN1Z0dFUm1DUFBDSWVXVmdCZW5sSXpjOWZQZ1Arc2ltdXhLSktuMWs4YVNJZnFhV0hxZWZyVWtPME5GbUlKT21TTXhtZXBYb1IrallzeHNDNkZmTHBzTURoSDhiQmxuaVZRYVYrYjBaaVN5L1dsYTg5WnFQNUpHUmpWRDBINS9LVDFlcFFpMm8rZTdRa1dFS1lDT1hNdlNEWGJ4Z0hiVVJpaVU0N3lzck9XNWxJM1M1UHdsdElHazBXbDNmUUF1SHJHTGhUZnFYbkZMYmZpYTAySXJhU0krZGFpbnQreS9yOStaR3FCL3djZnl2RFdoRXh4Mjk5OExyZWhzcWJCVWJBci9RSXpCZDBHTWJNaHYrWnMyaWpOYVlNVndBSjMvN3ZGSmNGSm1pRkxiS1VCL0dRVjlCOHB3bVRFRGlIVGdqOUZyWHhCY0ZtcHMwSDI0ekQzd0szZzBLine truncated
@@ -0,0 +1 @@
eyJ2ZXJzaW9uIjoiMS4wLjAuMiIsImF1dGhvciI6IiIsImF1dGhlbm5hbWUiOiJ2aXAxMF9ib2xsQkIiLCJkZXNjIjoiIiwiZGF0YSI6InZJK21zcG40TGtVRW56MVJTaGErYUkrbERKVytiRktlbTNoTmJyeTQ4aUJqbGNLVWJSQjMycDdIcVZHQkxEY1A2Y1lQVDVWK1J3dGNZSnFJeWVsWERkQkk2aFhCSnBUNWs3SERDdVY0L0xhNUZCNGRrZG5jRUE5VXQ1eDVhT0hkZ2FuWXkrOVdzd0JKTnZzQWpTU3RkOXM1S055Tlc3SzJJTXdpYzRBVnBtejQ5WnJER2lhT2tUVDluSnI2ZnhHcDNiNmlvRk9tS2xNc1o5R1pPZTNmR2tXNHpXck5rMEU4MXNhd0JGWXN3YVVqWlhrSmRPSHVCZ1FLTmoxU1gxNDVGYXJtRFp6SzhJRksyak1uaW9KbWRLaTZZM3RGdkQzYzlzV0JsK3BnQWlrNUtFZHUrYVkwbkczWld2OEFWV0Z2TUdtN2t0V0FQSHA5b21LcUxRMFUvM1M4V1FmUlJWMUNIOFB3Y1FvK3NDdUVNNDcveE5XWTZVRXRaY1BOVEY2SW1yeXB1cnM5cm9iekxvWG4zVmxlRXdtd1dKSlV3eWlKbGVvSXE2bWo3VVdtbDJQa0VzTFVFU2JNWmdPV2FyMS9kNTlaYXhUMEZnU1ZGVWJCZjA2Njg3ZWlPTUNHQmc5SE13MnAwcTNvL1JZZGpDTlNQTnZieksyU0VZRWdUWCtwTm1kalN3VVg0b2cxQnRLV2pMWmMydUJFcEpPVnI5TmNnTUM3OTlYRWwzK1VzR2pYN0FqZ0d4VWhDMG5sUlBRZEh2UVhjb2RLRUR3NWZKSTlwRWVBaXcxUkpldmoxUFB6MUMrWlpSaEEvOEVlNjFOaTdpVHF0MW14TnU0ejRlZ0RnbUZDVm9wUk9oaVRiMUpZQTRDV3ZhQkkySUpOejNBUWFjRDIvbWhLT2NOVzVUeTVWT1ZPR2w4SVZVM25FQ0Z0TmRLZ1Q0em83RXNrNlg1YU4zVS93bTNJaFFOTkNUTXlYU0hjODc2a1JmUFRqamczeVQvc3p0MDhDNWo4dVNXODlMczN3V3ZMYk1Od29BN2ZLc3E3cG1Lb0VWaE9zZGhEYVRzK1V3VERQSXpvQktoWmwvYWdGVyt5UnkvVFhNRTd1eXdxVk1UTHBodkcrOXFFV2ppVTJ3VjFzR2dlU25qQTB0MXVjYU14TjhvYXRWS2REUTQ5NDM3QUIrZUhLUWRGOUlaTE5SR1hGbXFWYStVWk5KMGpkV3dabDRXb0xtSy9XK21qSlVVOEhXNXY4OXAybEdwWCtxSVZqaHZpQjRVaitwTWZtMTFZeFdOZ0xDOHdlVG5NcTJWaDFURFV5UWZ5Qll1SFhML3IyMmFZOEdvWFhFYTEzN2JOUFl6VU5aSVppbTlxc1BKWnZ3VUhWQi9aWEprYWZ1bGV2ODJqaHRTSkpuOTl0L0ptSnFURjRPTGpUZXl6VWdQb0p6RjJBNTdlMXpoSEo2N2E2MG12OEUrREhjTzluL3kzSDZIbFkrQnNDUE00MGR6emFmeUVYV2VIZm0xeXRDTGxtT3ArWXdZSEJQNFdYSGRhQ2tadjc0UXhkZUtrUjdFV2p4c252UXppQ3JqS2szTDJPYmFIbGtVZFhqaW5pdXZsRmNMYlhmWVdSSXNJWXQzYmlHcDhMNTNvSGNFMmhySE0vRWdnOStRUlhaejRHNFk3QXZNbE56K1pST3E2U2hlaUk0Y3FMSnRuZVpkZGpIb0R2MVhRNHhNRFEvQXkxU1NISnk1OXZSdGlJNFZKeW1RZ3BQbXFVUUh1VUxyZW16aCtmaHdScm8xNjc5Y1RCV1JuaWNRcnVkWkRCZmR1dFRYSGtENnVzT3lkL2dpcjA1bld2UWJRQnkwUDJ1VUJSQ2VvekJYQU16MDB6ZGJSeHY5WDJ3aW1ZanZVV0x1a2IwYnU5RzhiSTBBMnN6RHJlYlBWOUx5Vk8rc2lFTUdRbS9zUGxBRXdMckVMcGxqNzZWa3VWSGp1YnI4WnBBQjN3emFsMjkvaElwTElDN3VmaE9yUGowSFF4ZjBqS3ZXaXNVN0l3cEpxVjRzYkl1VWhtL2dlbXVUOVlIdWM4cWdvcVJ4NVJrVHg2MWFCdEk0MmxCemhSTW1PY05rOFBCVzU1aHFlMG9scW40VnBvVnlXNWdkSDJHRmYzbkl2WFBoSHRYUFBhZnJ6V2FyRVNBMWxpNlZObHZYUi8rTjlHVllabjg4bmZzdjBQeFRIMjE4alZuWk0ycHRXbUo5UitsWG1ObGR4NUJjL3pkVEt1VFZrbDNQS2V6R1dCd1pIMURzVlNJMWlOVzgwUTU0THdFcTRISHMzNGxtT09YY0hjQ3N0cXR3dTdJaGdlOUFZeEJ6bXF2TndOSTZZaTA5YmRJSUpGU1lQeVVHcGZHSEdWa2pJQVZUVkM2WFBKSjIzc0JlNXdMc21iR0FWbjNuT3JKUVZHNWpJbXgxNFN2UkFWRzMxZlkrb2tVWXBKcGl0eDNTS05KaS9zcXhZUGt5eXgweHp2aS9ISFRUd1VoREs4NU40K2FzM1h4OU5CZklyYXJNSkcwLzRvTVlyRHROT1pHcVlLZzUzYTBxRHdoTnBSMCtUMnVvWVMwQkwwQ3V4eG5VbUd0TkdUekhxbndRbnBRNHJjY3VxMUlQU3FVN0tKTzZNaGpFNTQxM3RmNTBHN1dNVDluRzFoei9haWprYjZvdElyUzRCMmJKYm1sbnNNV1pnaTVsMUphekNGNWE0V2NJVGxJYXFvR0lOcjArL3VkbWZ3VHF0TlN3aFkzU0VPaENhbnZ3NHFSSFFYOXJSSS81VUNKTm1mdWlNRTBnRXZjcUFJTkxDRFNQblRoeEJoL2pObk9jZG1DNTUwdjhRMHRFbDhpUyt4cUhkS3R1TGpXTUhMcC96LzBBQUhLcjVGZEdsYzJFRjlyL0dxOHcyZXJobTZURDdaZ0NYYkJMeE5FSHdjQ1lnRGVaRlJrcnRSSGxYT2xlZVg4cXlnallUUVNzYzQwTmt6blFUT2dDWENROVpmWStIdUVBdFhueTV0UWw1a2VONWhDWGkwQVdlWnpzRXNKSU8vWGFsc2tnOWlyaXVRSTMvTXBjMjhubkxORG1nM21RNTJsS0h1bFg5VGtuMFlCeW5hNHVqdGZsNmRNaFBwYWpDMm1SYnBwaVNZQ3JOSzE3ZW8ySHBaTmVlOEJkWmpnM1NLYUtVck1lMXBqdVZhMk9GVFhlRVFiUnhqd2cyZ3NoUExJc05DbWJUVW5HTjVFdTRwQWlOMkdHZUpCeHdkWkZvV1prSE9GU0R4aUtxVTdpbHhHd1B3NFVuVG9sM0FrQVo2QU00N2tFTWtNeFM5eGVZTmR5Z0QyQ2liNkU1WC9xYWUrTU01UHRoWTExdmZPT210RDYwU3pQSGw1cnROcDZ0ZndIZlhDQUxuUC9ySkM0bUFGd0VjWE12b2ovNGh0bWFvcEZMNXJJb1BEc2FQUXMyYSttM0ZLOWRaaEthd0ZoTjNWSTU3Ukc4NUNsNTZJR3ltSHJibFhqSVZWMVcrR2JhL2tCL2s0RnlsU3JDWWp5M2o2RTRwbmdmaHk1Ky9MZVpIZ1Fzd0VpbVJ6bVlPM2d6dEVTNllycmJJM1F5aTlHWkhCbjJlWVN1ZzBNUEwvQU91UEdNOXlCWGhBZU5nNE1icHpkREtDZS9HcFc3cDV1VTQwa0xMeVhXVUNwNnR0MTdmS3MzTjBySk11VFRpblVDSGVaNE43cWJLK21oUFNHeUEzTWxZSjIxYzJZbmFJNGFNeXdoMmtXM2VQTXllTlZKRnR3b3FTU09vYUNScDUwUStyRm94cVlCUUFVWFFFbkdtNm9tQzVNQU5PYWg5YmpyM2VjZGVMS1c2Rjg5ai9CcVFEeTZQb3phRXc4cG5CUmJ4MW9oZ2FZdEl0QlhkMXpkdVMzakwxQ3l0U29IRmV3OEdPWEZDQ2V1bitKTFRtaVVHclovekNlV2ZSL3ZZWHdLMUpKdHROVnlMSFgxOWR5di9kem1RMkdHSVZmbm8wOU1UbVBOb0ZUamxROU1RMlUzR2JqSks0bjVNN2loNkc2RjNBZFBHQW9melFIbWx2K0JMT0hiYnIzWjkxa0FYZ1NjOWUzbW5haFVWUkwxOHlwU0JNMm5Ld08xdXFBZkZuNnlXNnJwTXV3Tlo0SGxqSy96TXpxZ3RteThzY2xQTEs1ZmhqelJHaUJQcGhXZ3V0WmpUeHBEVVpiODYybEZ0OVJpRUVBeDJ3UU5RYlU5aEhUaElJRzlsNUJiak9zaWtPZ292MDRQTzVEdHZvK1kzaFBPQWNhWG1mSG9WejhmNDB3azdpc1VwUWRwU3ZZdjRiK3hINCtxSVpyclZpWUR3RXJZdWFBSHNrTzBYQSt6NHNad2F3Y2QzOXpaU1JTK1d6UmZLQUNqVU1KODBuaHFMVGVtdFVjNE1UV2NhekpSZitJb3ljVk1uZ2c2QmYySmNpS2xwb1hOUjQrTC82blg3SnlYUXJvVVdWSkhsYTNzYmF3eWhhOHIzblF6eUdNSnZjRmFQZm1sSjZIOTBRYVN1d2ZTMkRKUWUvWTdEaHorTnVPdTJnQ0RGc2tDNDNaSlE5TytTN01hNUVoRkJ6bktPVVdlRm9RdGhvMVRxdGxtNlowNkc1MDJiUGdWL3QvQnVQeFhZY3lrc21LS3VCUHhYWi9XdkFLS00ybXJlOFYycDZGaUVQa0U3SkZSWjh4Q2VSV3FhNWNBU1pJWkhCRmt0bkhqZWRBdk9wV2FoenBKYlE3Q1Q0WHhtVXVVb0J4N2FIM04rVG4xYnFIYWxaMm1jZVlQSVkzOWlWU21VU0wzTktoOHhqY2ZBME1QRXhpbXVwUW9rcHdqQTI2UVNiZnh5SEYrZE1uSHpEM1pmbEVoUHRLine truncated
@@ -0,0 +1,179 @@
//------------------------------------------------------------------------
// 简称: vip09
// 名称: vip09
// 类别: 公式应用
// 类型: 用户应用
// 输出: Void
//------------------------------------------------------------------------
Params
//默认螺纹888 1小时
Numeric Length(20); //周期
Numeric Offset(2); //标准差倍数
Numeric X(0.5);
Numeric SS(0.01);
Numeric TRS(75);//移动止损止盈幅度 参数范围及步长: 5-100,5
Numeric Fund(20000); //投入保证金;
Vars
Numeric Lots(0);
Series<Numeric> ma1;
Series<Numeric> UpLine; //上轨
Series<Numeric> DownLine; //下轨
Series<Numeric> MidLine; //中间线
Series<Numeric> Band;
Series<Numeric> cond1;
Series<Numeric> cond2;
Series<Numeric> cond3;
Series<Numeric> cond4;
Series<Numeric> kcond1;
Series<Numeric> kcond2;
Series<Numeric> kcond3;
Series<Numeric> kcond4;
//出场变量
Series<Numeric> MyPrice;//开仓价格
Series<Numeric> MyPrice2;//开仓价格
Series<Numeric> HighAfterEntry;//开仓后出现的最高价
Series<Numeric> LowAfterEntry;//开仓后出现的最低价
Series<Numeric> liQKA;
Series<Numeric> DliqPoint;
Series<Numeric> KliqPoint;
Series<Numeric> barcoutN;
Series<Numeric> bar_entry_count;
Series<Numeric> kaicang_kg;
Series<Numeric> BB;
Series<Numeric> WIDTH;
Plot plt1;
Plot plt2;
Events
//此处实现事件函数
//初始化事件函数,策略运行期间,首先运行且只有一次,应用在订阅数据等操作
OnInit()
{
//与数据源有关
Range[0:DataCount-1]
{
//=========数据源相关设置==============
AddDataFlag(Enum_Data_RolloverBackWard()); //设置后复权
AddDataFlag(Enum_Data_RolloverRealPrice()); //设置映射真实价格
AddDataFlag(Enum_Data_AutoSwapPosition()); //设置自动换仓
//AddDataFlag(Enum_Data_IgnoreSwapSignalCalc()); //设置忽略换仓信号计算
plt1.figure(0); //plt_vol单独设置画板,没有指定画板id,系统自动创建
plt2.figure(0);
}
}
//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
OnBar(ArrayRef<Integer> indexs)
{
Lots = Max(1, Round(Fund/(O*ContractUnit*BigPointValue* MarginRatio/rollover), 0));
MidLine = AverageFC(Close,Length);
Band = StandardDev(Close,Length,2);
UpLine = MidLine + Offset * Band;
DownLine = MidLine - Offset * Band;
PlotNumeric("MidLine",cond1,cond1,White);
PlotNumeric("UpLine",cond2,cond2,red);
PlotNumeric("DownLine",cond3,cond3,Green);
//布林极限(BB)=(收盘价-布林下轨价格)/(布林上轨价格-布林下轨价格)
BB=((C-DownLine)/(UpLine-DownLine));
//WIDTH=(布林上轨值-布林下轨值)/布林平均值
WIDTH=((UpLine-DownLine)/MidLine);
plt1.line("BB",BB); //画线
plt2.line("WIDTH",WIDTH);
if(MarketPosition!=1 and H>=UpLine[1] and C[1]<UpLine[1] and BB[1]>X and WIDTH[1]>SS)
{
Buy(Lots,max(open,UpLine[1])); // 如果满足开多条件,则买入
LowAfterEntry = EntryPrice;//保存多头开仓价格;
kaicang_kg=1; // 标记已开仓
bar_entry_count=0; // 重置连续未开仓的Bar计数
barcoutN=0; //重置liQKA系数的计算
liQKA = 1;
}
if(MarketPosition!=-1 and L<=DownLine[1] and C[1]>DownLine[1] and BB[1]<X and WIDTH[1]>SS)
{
SellShort(Lots,min(open,DownLine[1])); // 如果满足开空条件,则卖空
HighAfterEntry = EntryPrice;//保存空头开仓价格;
kaicang_kg=1; // 标记已开仓
bar_entry_count=0; // 重置连续未开仓的Bar计数
barcoutN=0; //重置liQKA系数的计算
liQKA = 1;
}
if(kaicang_kg[1] ==1) // 如果在本周期内有开仓操作
{
bar_entry_count=bar_entry_count+1; // 将开仓计数器加一
}
Else
{
bar_entry_count=0; // 如果没有开仓,则将开仓计数器重置为 0
}
//移动出场
If(MarketPosition == 0) // 自适应参数默认值;
{
liQKA = 1;
barcoutN=0;
}Else if(bar_entry_count>barcoutN) //当有持仓的情况下,liQKA会随着持仓时间的增加而逐渐减小,即止损止盈幅度乘数的减少。
{
liQKA = liQKA - 0.1;
liQKA = Max(liQKA,0.3);
barcoutN=bar_entry_count;
}
Commentary("kaicang_kg[1]"+text(kaicang_kg[1]));
Commentary("bar_entry_count"+text(bar_entry_count));
Commentary("barcoutN"+text(barcoutN));
Commentary("liQKA"+text(liQKA));
// 记录开仓后的最高点和最低点
If(bar_entry_count > 0)
{
HighAfterEntry = Min(HighAfterEntry,High); // 空头止损,更新最低的最高价
LowAfterEntry = Max(LowAfterEntry,Low); // 多头止损,更新最高的最低价
}
if(MarketPosition>0)
{
DliqPoint = LowAfterEntry - (Open*TRS/1000)*liQKA; //经过计算,这根吊灯出场线会随着持仓时间的增加变的越来越敏感;
}
if(MarketPosition<0)
{
KliqPoint = HighAfterEntry + (Open*TRS/1000)*liQKA; //经过计算,这根吊灯出场线会随着持仓时间的增加变的越来越敏感;
}
If(KliqPoint[1]>0 and MarketPosition<0)PlotNumeric("KliqPoint[1]",KliqPoint[1]);
if(DliqPoint[1]>0 and MarketPosition>0)PlotNumeric("DliqPoint[1]",DliqPoint[1]);
// 持有多单时
If(MarketPosition >0 And bar_entry_count >0 And Low <= DliqPoint[1] and DliqPoint[1]>0 and DliqPoint[1]>0 and bar_entry_count>0)
{
Sell(0,Min(Open,DliqPoint[1]));
DliqPoint=0;
kaicang_kg=0;
}
// 持有空单时
If(MarketPosition <0 And bar_entry_count >0 And High >= KliqPoint[1] and KliqPoint[1]>0 and KliqPoint[1]>0 and bar_entry_count>0)
{
BuyToCover(0,Max(Open,KliqPoint[1]));
KliqPoint=0;
kaicang_kg=0;
}
}