La estrategia de lanzamiento de monedas (●''●)

El autor:Las judías., Fecha: 2020-04-21 17:39:52
Las etiquetas:

El nombre completo de T-Shirt es T-Shirt Public, y la traducción está en inglés. A continuación se muestra el contenido de la transmisión. ¡Por favor, sigan más en el mundo de la cantidad por miles para obtener más código fuente de estrategias! Y también me he hecho un anuncio. Publicado en "Diario cuantificado de las judías" ¿Qué es lo que está sucediendo con el dinero en línea? ¿Qué está sucediendo con el dinero en línea? ¿Qué es lo que está sucediendo?


¡Es tan fácil ganar BTC con una buena tasa de fluctuación! El mundo de la cantidad hace 3 días La investigación y desarrollo de estrategias de cuantificación del aluminio es en realidad una doble dimensión, muy difícil y difícil para aquellos que están entrando en el negocio, difícil no sólo es el código a nivel de aluminio, sino también difícil es el pensamiento lógico estratégico a nivel de aluminio.

¡Hola a todos los amigos de la cantidad!

Este es el segundo artículo de este artículo especial, y tenemos el honor de invitar a todos a que vayan a ver a los monjes de la orilla del océano (microsignales LE_CHIFFRE1) para presentarles: ¡cómo usar el factor de fluctuación para ganar fácilmente en el mercado de BTC y lograr una reducción de la dimensión de la barrera de la orilla!

Este número abarca la revelación de ideas, la implementación de la codificación y la comprensión personal, etc., no se puede decir que esté lleno de productos secos, miles de personas que lo leen también se sienten beneficiadas, realmente admiran y agradecen a Liu.

A continuación, se muestra el video en el que se muestra a los jugadores de los juegos de azar de los juegos de azar de los juegos de azar.

01

Preámbulo

Hola, hoy tengo el privilegio de lanzar un artículo en el número público de miles y miles de cuantificaciones, y también agradezco la invitación del jefe T (uno de los miles de números externos).

El dueño de T dice que escribir un cuantificado, sin dar ningún alcance, realmente no sé de dónde escribirlo. Entonces empiece con su tema favorito para hablar con otros. Indicadores y estrategias de cuantificación (que también pueden ser ayudados y automatizados), por supuesto, finalmente, también debemos agregar una frase que siempre se dice: invertir con riesgo, entrar en el mercado con precaución, las estrategias solo ofrecen ideas y lecciones, ganancias y pérdidas.

Después de la declaración de exoneración, aquí comienza el tema principal.

02

Una estrategia de fluctuación simple

Los que me conocen saben que personalmente no me gusta mucho el juego de Alfa, comparativamente creo más en las beta, más en las beta. Por qué, e.........mmmmm, no sé qué respondió. Si están interesados, pueden escribir en privado, dejar un mensaje al autor del número público, la lógica es clara y el autor mismo les enviará un pequeño paquete rojo.

La investigación y desarrollo de estrategias cuantitativas es en realidad una doble cara, muy difícil para los que recién comienzan, difícil no sólo es el código a nivel de la técnica de la magia, también difícil es el pensamiento lógico estratégico a nivel de la jerarquía. Ambos son importantes, no hay que prejuiciarlos. La estrategia que les presentamos hoy en realidad fue inspirada hace muchos años por un informe de investigación de HuaThai, todos miramos detenidamente sólo para inspirar a los expertos, por lo que esto se dice porque la lógica estratégica ya no es del todo lo que se menciona en el informe de investigación, específicamente el informe de investigación.

El algoritmo estratégico utiliza el principio de fluctuación de la rentabilidad de rotación de la caída de los precios de los logarítmos de ciertos ciclos, según el cual se calcula el valor máximo y mínimo de rotación de ciertos ciclos, el valor máximo es el tubo superior, el mínimo es el tubo inferior, rompe el tubo superior, abra una posición. El promedio de rotación del tubo superior y inferior es la línea de posición.

La interfaz de visualización gráfica específica se puede consultar en el siguiente PPT.

img

En realidad, esta estrategia es la estrategia que él mismo usó antes para hacer ETFs de base ancha, y por supuesto también se usa para comprar y vender acciones al elegir índices, luego se trasladó directamente al círculo monetario, y se sorprendió al descubrir que realmente redujo la dimensión del golpe, los parámetros no necesitan cambiar.

img

El siguiente gráfico muestra el rendimiento de las revisiones durante el año, con algunas secuencias de código lógicas específicas:

img

En la parte superior, después de leer los datos, los pandas hacen el cálculo de los datos indicadores.

img

Una vez finalizado el cálculo, se puede exportar los datos a través de la función pd.to_csv y visualizar las pyecharts utilizadas en la pantalla anterior.

Todos los estrategias, visualizaciones y código de los indicadores de rendimiento son una charla típica.

03

La conversación se cuantifica

Primero, una buena estrategia no tiene miedo de ser abierta, esto no es un desarrollo de armas de combate a nivel de guerra que decida la vida o la muerte, por lo que yo y otras agencias o personas no tenemos miedo de lo que se llama secretos de estrategia, porque a mi parecer no hay secretos, sino ideas que todos piensan y no esperan. Esta versión es la versión más antigua de la misma, sobre la base de la cual se han hecho varias mejoras, por ejemplo, se han agregado otras condiciones de juicio y bloqueo de daños, etc., y por supuesto, se incluyen otros parámetros de ajuste del ciclo de variedades, etc.

Segundo: Muchas personas, ya sean novatas o ya iniciadas o incluso jugadores antiguos, necesitan fuentes de inspiración, incluida la exploración de factores de las acciones, ideas de estrategias de tiempo, etc., que a menudo se basan en la experiencia subjetiva, informes de investigación, intercambio de comunicación dentro del círculo, etc. No excluye algunas estrategias compradas en el mercado ahora y luego leer y comprender, según su propia capacidad de asumir riesgos y necesidades específicas en la modificación de la versión, etc.

En resumen, la cuantificación era un producto de la tradición, la negociación programática pertenece a un subconjunto de la cuantificación, ya en la universidad propia (alrededor de 2009), cuando la tuberculosis, la pirámide y la programación fueron cazadas, y si se continúa hoy, se puede decir que los primeros profetas de este grupo han pasado 10 años, sin incluir las estrategias y sistemas de alta frecuencia que regresaron de Wall Street. Por lo tanto, la estrategia de cuantificación o la estrategia de programación en China ha durado durante algún tiempo, pero en el círculo actual de mercado y los actores y el apoyo de la política, la cuantificación sigue siendo una parte muy pequeña, a pesar de los informes llenos de análisis y modelos estratégicos.

Por último, gracias a los miles y miles de personas que cuentan con el nombre de la comunidad por su confianza en su profesión y por la invitación a escribir.

¡Gracias otra vez por la maravillosa explicación!

Los amigos que aún no se han unido a los grupos de discusión pueden unirse rápidamente para obtener información.

¡El edificio de la ciudad!

img

WeChat es una limpieza El número de público


/*backtest
start: 2020-01-20 00:00:00
end: 2021-01-19 23:59:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_BitMEX","currency":"XBT_USD","fee":[0.008,0.1]}]
args: [["st",0.1]]
*/

// 初始化
exchange.SetContractType('XBTUSD')
_CDelay(100)
// 止盈止损
var TP_status = false // 是否触发追踪止盈 
var TP_HH = 0
var TP_LL = 0
var B = 1

// 获取交易所信息
function UpdateInfo() {
    account = exchange.GetAccount()
    pos = exchange.GetPosition()
    records = exchange.GetRecords()
    ticker = exchange.GetTicker()
}

// 定制本次盈亏
function Onept() {
    // 更新用户信息
    UpdateInfo()
    // 如果现在余额 大于 之前的余额, 那么 盈利次数+1, 且pt_1设为现在余额
    if (account.Stocks - pt_1 > 0) {
        pt_times = pt_times + 1
        Log('这回赚钱啦~~~~ (^U^)ノ~YO', account.Stocks - pt_1)
        B = 1
        pt_1 = account.Stocks
    }
    // 如果现在余额 小于 之前的余额, 那么 亏损次数+1, 且pt_1设为现在余额
    if (account.Stocks - pt_1 < 0) {
        st_times = st_times + 1
        Log('这回亏掉了.... /(ㄒoㄒ)/~~', account.Stocks - pt_1)
        B = B * 1.618
        pt_1 = account.Stocks
    }
}

// 画线
function PlotMA_Kline(records) {
    $.PlotRecords(records, "K")
}

// 追踪止盈 初始%, 追踪U
function TP() {
    var TP_first_long = pos[0].Price + tp_first * ticker.Last
    var TP_trailing_long = TP_HH - trailing_tp * ticker.Last
    var TP_first_short = pos[0].Price - tp_first * ticker.Last
    var TP_trailing_short = TP_LL + trailing_tp * ticker.Last
    // 当多仓时, 现价大于开仓+初始止赢价 -> 触发追踪止盈 
    if ((pos[0].Type == 0) && (ticker.Last > TP_first_long)) {
        // Log('当多仓时, 现价大于开仓+初始止赢价 -> 触发追踪止盈', TP_HH)
        TP_status = true
        // 触发追踪止盈, 未初始化开仓最大价格 -> 开仓后最大价格更新为现价
        if (TP_status === true && TP_HH == 0) {
            Log('触发追踪止盈, 未初始化开仓最大价格 -> 开仓后最大价格更新为现价', TP_HH)
            TP_HH = ticker.Last
        }
        // 触发追踪止盈, 已有开仓后最大价格, 现价大于开仓后最大价格 -> 开仓后最大价格更新为现价
        else if (TP_status === true && TP_HH != 0 && ticker.Last > TP_HH) {
            Log('触发追踪止盈, 已有开仓后最大价格, 现价大于开仓后最大价格 -> 开仓后最大价格更新为现价', TP_HH)
            TP_HH = ticker.Last
        }
        // 触发追踪止盈, 已有开仓后最大价格, 现价小于 (开仓后最大价格减 - 回撤USD) -> 开空平仓止盈
        else if (TP_status === true && TP_HH != 0 && ticker.Last < TP_trailing_long) {
            Log('触发追踪止盈, 已有开仓后最大价格, 现价小于 (开仓后最大价格减 - 回撤USD) -> 开空平仓止盈', TP_HH)
            exchange.SetDirection("closebuy")
            exchange.Sell(ticker.Buy, pos[0].Amount, "在" + ticker.Last + "止赢平多仓!! 开仓价格: " + pos[0].Price + "数量: " + pos[0].Amount)
            $.PlotFlag(new Date().getTime(), 'Sell', 'PT_BK' + ticker.Sell)
            Onept()
            TP_status = false
            TP_HH = 0
        }
    }
    // 当空仓时, 现价小于开仓-初始止赢价 -> 触发追踪止盈
    else if ((pos[0].Type == 1) && (ticker.Last < TP_first_short)) {
        // Log('当空仓时, 现价小于开仓-初始止赢价 -> 触发追踪止盈', TP_LL)
        TP_status = true
        // 触发追踪止盈, 未初始化开仓最大价格 -> 开仓后最小价格更新为现价
        if (TP_status === true && TP_LL == 0) {
            Log('触发追踪止盈, 未初始化开仓最大价格 -> 开仓后最小价格更新为现价', TP_LL)
            TP_LL = ticker.Last
        }
        // 触发追踪止盈, 已有开仓后最小价格, 现价小于开仓后最小价格 -> 开仓后最小价格更新为现价
        else if (TP_status === true && TP_LL != 0 && ticker.Last < TP_LL) {
            Log('触发追踪止盈, 已有开仓后最小价格, 现价小于开仓后最小价格 -> 开仓后最小价格更新为现价', TP_LL)
            TP_LL = ticker.Last
        }
        // 触发追踪止盈, 已有开仓后最小价格, 现价大于 (开仓后最小价格减 + 回撤USD) -> 开多平仓止盈
        else if (TP_status === true && TP_LL != 0 && ticker.Last > TP_trailing_short) {
            Log('触发追踪止盈, 已有开仓后最小价格, 现价大于 (开仓后最小价格减 + 回撤USD) -> 开多平仓止盈', TP_LL)
            exchange.SetDirection("closesell")
            exchange.Buy(ticker.Sell, pos[0].Amount, "在" + ticker.Last + "止赢平空仓!! 开仓价格: " + pos[0].Price + "数量: " + pos[0].Amount)
            $.PlotFlag(new Date().getTime(), 'Buy', 'PT_SK' + ticker.Sell)
            Onept()
            TP_status = false
            TP_LL = 0
        }
    }
}

// 止损 %
function Stoploss() {
    // 当多仓时, 现价小于开仓-止损价, 做空平多
    if ((pos[0].Type == 0) && (ticker.Last < pos[0].Price - st * ticker.Last)) {
        Log('当多仓时, 现价小于开仓-止损价, 做空平多')
        exchange.SetDirection("closebuy")
        exchange.Sell(ticker.Buy, pos[0].Amount, "在" + ticker.Last + "止损平多仓!! 开仓价格: " + pos[0].Price + "数量: " + pos[0].Amount)
        $.PlotFlag(new Date().getTime(), 'Sell', 'ST_BK' + ticker.Buy)
        Onept()
    }
    // 当空仓时, 现价大于开仓+止损价, 做多平空
    else if ((pos[0].Type == 1) && (ticker.Last > pos[0].Price + st * ticker.Last)) {
        Log('当空仓时, 现价大于开仓+止损价, 做多平空')
        exchange.SetDirection("closesell")
        exchange.Buy(ticker.Sell, pos[0].Amount, "在" + ticker.Last + "止损平空仓!! 开仓价格: " + pos[0].Price + "数量: " + pos[0].Amount)
        $.PlotFlag(new Date().getTime(), 'Buy', 'ST_SK' + ticker.Sell)
        Onept()
    }
}

// 计算凯利公式 仓位
function PriceAmount() {
    // 赢可以赢多少 
    y = tp_first
    // 输会输多少 
    s = st
    //赔率
    b = y / s
    // 赢的概率
    if (total_times < 10) {
        p = 0.382
    } else {
        p = pt_times / total_times
    }
    // 输的概率
    q = 1 - p
    // 凯莉公式
    f = (b * p - q) / b
    // 限制B最大值
    if (B > 16.18) {
        B = 16.18
    }
    //Amount = _N(Math.abs(f) * account.Stocks * ticker.Last * B, 0)
    Amount = _N(0.618 * account.Stocks * ticker.Last, 0)
    //Log(Amount)
}

// 交易逻辑
function onTick() {
    // 获取均匀分布 0-9 随机数
    ToTheMoon = Math.floor(Math.random() * 10)
    // 无仓位时
    if (pos.length == 0) {
        // Long 
        if (ToTheMoon > 5) {
            exchange.SetDirection("buy")
            exchange.Buy(ticker.Sell, Amount)
            $.PlotFlag(new Date().getTime(), 'Buy', 'BK' + ticker.Sell)
            total_times = total_times + 1
        }
        // Short 
        if (ToTheMoon < 4) {
            exchange.SetDirection("sell")
            exchange.Sell(ticker.Buy, Amount)
            $.PlotFlag(new Date().getTime(), 'Sell', 'SK' + ticker.Buy)
            total_times = total_times + 1
        }
    }
        // 多仓时
    if (pos.length > 0 && pos[0].Type == 0) {
        // 平多 
        if (ToTheMoon < 1) {
            exchange.SetDirection("closebuy")
            exchange.Sell(ticker.Buy, pos[0].Amount)
            $.PlotFlag(new Date().getTime(), 'Sell', 'PBK')
            Onept()
        }
    }
    // 空仓时
    if (pos.length > 0 && pos[0].Type == 1) {
        // 平空 
        if (ToTheMoon > 8) {
            exchange.SetDirection("closesell")
            exchange.Buy(ticker.Sell, pos[0].Amount)
            $.PlotFlag(new Date().getTime(), 'Buy', 'PSK')
            Onept()
        }
    }
}


function main() {
    UpdateInfo()
    // 统计
    pt_1 = account.Stocks
    total_times = 0
    pt_times = 0
    st_times = 0
    while (1) {
        UpdateInfo()
        PriceAmount()
        onTick()
        PlotMA_Kline(records)
        if (pos.length > 0) {
            TP()
        }
        if (pos.length > 0) {
            Stoploss()
        }
        LogStatus("总余额: " + _N(ticker.Last * account.Stocks, 2), " 下单量: " + Amount, " 下单倍数: " + B, " ToTheMoon: " + ToTheMoon, " 下单量比: " + _N(Amount * 100 / _N(ticker.Last * account.Stocks, 2), 2), "% 胜率: " + _N(p * 100, 2), "%", total_times, pos)
    }
}

Más.

¿Qué es esto?¿Se puede cambiar a una versión de Bitcoin?